【发布时间】:2016-03-30 13:33:21
【问题描述】:
代码是this question的答案之一。
#include<stdio.h>
#include<unistd.h>
#include<signal.h>
void
sigusr1( int pidno )
{
fprintf(stderr, "Caught\n");
}
int
main()
{
pid_t pid;
signal( SIGINT, sigusr1 );
if( (pid = fork()) == 0 ){
pause();
fprintf(stderr, "Child\n");
}
else
{
fprintf(stderr, "Parent\n");
kill( pid , SIGINT ); //parent sends signal to child
}
pause();
return 0;
}
子等待一个信号,收到后继续执行。
运行它我得到了
Parent
Caught
孩子收到信号后好像没有跑。按 Ctrl+c:
Parent
Caught
^CCaught
Caught
Child
谁能解释一下这里发生了什么?
【问题讨论】: