linux不可靠信号阻塞问题

作者: 787810465@qq.co 2015-10-15 15:54:08
先贴源码:[code]#include
#include
#include
#include
#include

void handler(int sig)
{
pid_t pid = waitpid(-1, NULL, WNOHANG);
printf("reaped a child: %d\n", pid);
sleep(2);
}

int main()
{
signal(SIGCHLD, handler);

int sum = 10;
while (sum--)
{
pid_t pid = fork();
if (pid == 0)
{
printf("msg from child task: %d\n", getpid());
exit(0);
}
printf("generate a task: %d\n", pid);
}

while (1)
;

exit(0);
}[/code]这是一个书上的例程,按照书上来说应该只会产生一个僵尸进程,第三个进程的信号被丢弃了
但是我在ubuntu下运行却产生了两个僵尸进程,请教一下什么原因?

相关资讯