红联Linux门户
Linux帮助

linux不可靠信号阻塞问题

发布时间:2015-10-15 15:54:08来源:红联作者:787810465@qq.co
先贴源码:[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下运行却产生了两个僵尸进程,请教一下什么原因?
文章评论

共有 1 条评论

  1. 文峰聊书斋 于 2017-02-17 09:16:45发表:

    你的option是不阻塞直接返回,看看apue里对waitpid的介绍。unix环境高级编程