私は初心者です、優しくしてください!私は本からコードをコピーしました:
#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
、目覚まし時計をシミュレートします。子プロセスはSIGALRM
、親に信号を送信する前に5秒間待機します。
上記のコードを試しましたが、印刷しても応答がありませんalarm application starting
waiting for alarm to go off
だから私はコードに論理エラーがあるのではないかと疑っています。行kill(getpid(), SIGALRM);
が間違っている可能性があります。私は正しいですか?