红联linux Linux通用技术 - Linux发行版技术 - 企业应用 - 实验室  Linux论坛

您的位置: 红联linux >> Linux通用技术 >>

Linux编程与内核

>> 查看内容 -学Linux必读Linux学习教程推荐下载发新话题 (游客可发贴)

linux不可靠信号阻塞问题

787810465@qq.co发布于 2015-10-15 | 次阅读   字号:     (网友评论 1 条) 我要评论


先贴源码:
CODE:
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>

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);
}

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

 相关评论
作者: 文峰聊书斋 发布日期: 2017-2-17
你的option是不阻塞直接返回,看看apue里对waitpid的介绍。unix环境高级编程
共有评论数 1/每页显示数 10

 我要评论
发表评论,与各位同人交流。回复请点击下方的我要评论按钮(游客可回复),要发表贴子请点击 发新话题 (游客可发贴)
 热点主题
·求助我在linux编程是遇到了
 最新主题
·求助我在linux编程是遇到了
 关注热点

Linux教程下载?
Linux学习教程推荐下载”(请点击),Linux教程免费下载。

求助Linux问题?
论坛有39版块,覆盖所有Linux技术层面。前往“红联Linux论坛

 

Linux系统教程 | Linux入门 | Linux管理 | Linux技巧 | Linux命令 | Ubuntu系统 | Linux服务器 | Linux数据库 | Linux开发

合作 | 关于我们 | 联系我们 | 导航 | 会员注册

©2017 红联 Powered by SupSite