社区
Linux/Unix社区
帖子详情
父进程无法接收到子进程退出时发出的SIGCHLD信号
Gishell123
2007-07-02 06:18:12
相同的程序,在自己的SUSE/Red hat环境下都可以收到子进程退出时发出的SIGCHLD信号。
但是到客户(OS:SUSE)那边就是无法收到。
请问这个是什么原因造成的?是客户(OS:SUSE)的环境造成的吗?如果是怎么确认是环境问题?
谢谢。
...全文
865
13
打赏
收藏
父进程无法接收到子进程退出时发出的SIGCHLD信号
相同的程序,在自己的SUSE/Red hat环境下都可以收到子进程退出时发出的SIGCHLD信号。 但是到客户(OS:SUSE)那边就是无法收到。 请问这个是什么原因造成的?是客户(OS:SUSE)的环境造成的吗?如果是怎么确认是环境问题? 谢谢。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Gishell123
2007-07-29
打赏
举报
回复
A里面没有屏蔽SIGCHLD,A会接收它的子进程的SIGCHLD,并做一些事后处理。
NC
2007-07-09
打赏
举报
回复
由于环境是在客户那边,所与无法调试。
大概是这样的:
父进程A fork B。(A还可以fork 其他子进程)
B fork C。
如果按照这个流程,B无法收到C退出后发出的SIGCHLD,
但是如果用script启动B,那么被B fork 出的C退出后,可以收到C发出的SIGCHLD。
这个现象大概是什么原因造成的呢?
==============================================================
会不会是你在A里面屏蔽了SIGCHLD?
dai_weitao
2007-07-09
打赏
举报
回复
你的父进程A是怎么处理SIGCHLD信号的
Gishell123
2007-07-08
打赏
举报
回复
顶一下。
Gishell123
2007-07-04
打赏
举报
回复
To Ropyn(剑心):
确认定了_XOPEN_SOURCE,但是现在还不确认是否第一个子进程的SIGCHLD能够接收到。
请看楼上的流程,A是从shell直接启动的。如果B也是从shell通过脚本启动,那么可以收到C的SIGCHLD。
Gishell123
2007-07-04
打赏
举报
回复
由于环境是在客户那边,所与无法调试。
大概是这样的:
父进程A fork B。(A还可以fork 其他子进程)
B fork C。
如果按照这个流程,B无法收到C退出后发出的SIGCHLD,
但是如果用script启动B,那么被B fork 出的C退出后,可以收到C发出的SIGCHLD。
这个现象大概是什么原因造成的呢?
DanXer
2007-07-03
打赏
举报
回复
4,5楼瞎说,不是这个原因.
SA_NOCLDSTOP是说子进程在STOP状态时(收到SIGSTOP,SIGTTIN,SIGTTOUT)不发送SIGCHLD给父,但是当中止时(SIGKILL,SIGTERM)还是会发SIGCHLD给父进程。
考虑看编译时是否定义了_XOPEN_SOURCE,而且父进程是否有多个子进程,在第一个子中止后,第二个子的SIGCHLD就收不到了。
OstrichFly
2007-07-03
打赏
举报
回复
是啊,自己屏蔽掉了,LZ解释一下为什么要这样?
plusboy
2007-07-03
打赏
举报
回复
利用wait看看能得到什么
dai_weitao
2007-07-02
打赏
举报
回复
你搞什么, 先用NOCLDSTOP把SIGCHLD屏蔽, 再调用, 还问为什么父进程收不到CHLD, 捣乱啊你?
Gishell123
2007-07-02
打赏
举报
回复
int sig = SIGCHLD;
struct sigaction act;
struct sigaction oact;
::sigemptyset ( &act.sa_mask );
act.sa_flags = 0;
if ( sig == SIGCHLD )
act.sa_flags |= SA_NOCLDSTOP;
int ret = ::sigaction ( sig, &act, &oact );
NC
2007-07-02
打赏
举报
回复
把你的程序贴出来看看。
cceczjxy
2007-07-02
打赏
举报
回复
描述清楚一点你的问题呀
检测
子
进程
退出
的方法
给出程序实例和文档如何获得
子
进程
退出
的
时
机。
特殊
进程
之僵尸
进程
测试代码
Linux系统编程——特殊
进程
之僵尸
进程
,相关链接教程如下: http://blog.csdn.net/tennysonsky/article/details/45966571
僵尸
进程
介绍以及防范
介绍什么是僵尸
进程
,以及如何处理僵尸
进程
Linux基础知识(10-10)-
进程
管理.pdf
Linux基础知识(10_10)-
进程
管理
linux中的僵尸
进程
在linux系统中程序是以
进程
启动的。而每个
进程
有分
子
进程
和
父
进程
。当
子
进程
被杀死。而
父
进程
还在运行
时
。就形成了僵尸
进程
Linux/Unix社区
23,215
社区成员
74,540
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章