我是新手,請溫柔我複製從一本書的代碼:此代碼是否有邏輯錯誤? !
#include <sys/types.h>
#include <signal.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
static int alarm_fired = 0;
void ding(int sig)
{
alarm_fired = 1;
}
int main(int argc, char* argv[])
{
pid_t pid;
printf("alarm application starting\n");
pid = fork();
switch(pid)
{
case -1:
perror("fork failed");
exit(EXIT_FAILURE);
case 0:
sleep(5);
kill(getpid(), SIGALRM);
exit(EXIT_SUCCESS);
}
printf("waiting for alarm to go off\n");
(void) signal(SIGALRM, ding);
pause();
if (alarm_fired)
printf("Ding!\n");
printf("done\n");
exit(EXIT_SUCCESS);
}
正如作者寫:
ding
,模擬報警clock.the子進程等待在將SIGALRM
信號發送給其父母之前,向其發送 秒。
我試圖上面的代碼,但它具有打印alarm application starting
waiting for alarm to go off
。所以我懷疑該碼具有邏輯和error.The線沒有響應kill(getpid(), SIGALRM);
可以wrong.Am我右?
「它不起作用」 - 實際發生了什麼? – Joe
@Joe我編輯了這個問題,我很抱歉。 – prehistoricpenguin
goto [code_review](http://codereview.stackexchange.com); – 2013-01-19 02:54:35