2018/01/30 10:05

引用来自“hrljy”的评论

楼主,我想请问一下,文中提到的“对方修改的代码”是在系统文件加上的吗?
那倒不是,一个应用程序某个模块里改过信号处理函数,会直接作用于整个进程。
2018/01/08 12:14
楼主,我想请问一下,文中提到的“对方修改的代码”是在系统文件加上的吗?
2016/05/10 17:42
真是细心啊
2014/02/23 22:02

引用来自“恋恋美食”的评论

引用来自“tuzhu”的评论

对于LZ封装的pox_system函数,有一个问题:
如果在system函数执行时,某个子进程挂了,此时SIGCHLD信号被忽视掉了。可能会导致对于子进程的后处理无法执行到。。

你有兴趣做个demo探讨下么?

解释一下我的看法,假设是如下的环境:
0.父进程创建了10个子进程,然后一个信号处理函数来监视所有子进程的死活状态。
1.父进程在调用pox_system函数时,将SIGCHLD信号的处理函数设置为默认(忽略)。
2.恰巧在父进程执行pox_system函数的期间,子进程0挂掉了。此时,父进程将捕捉不到子进程挂掉的信息。
我只是觉得存在这个可能性。由于上述问题的时机比较难以把握,所以不好写demo分析,不好意思。

对于system函数的这个问题,我的做法是这样的:
0.调用system函数执行所需的操作;
1.在使用waitpid来处理子进程结束时,函数的options这个参数一定要设置为WNOHANG。这样确保父进程不会因为system函数返回的SIGCHLD信号,导致主进程发生堵塞;
2.对waitpid函数的返回值进行判定,如果是需要处理的子进程,则进行相应处理。否则,丢弃SIGCHLD信号。
2014/01/23 21:11

引用来自“tuzhu”的评论

对于LZ封装的pox_system函数,有一个问题:
如果在system函数执行时,某个子进程挂了,此时SIGCHLD信号被忽视掉了。可能会导致对于子进程的后处理无法执行到。。

你有兴趣做个demo探讨下么?
2014/01/20 18:52
对于LZ封装的pox_system函数,有一个问题:
如果在system函数执行时,某个子进程挂了,此时SIGCHLD信号被忽视掉了。可能会导致对于子进程的后处理无法执行到。。
回复 @
{{emojiItem.symbol}}
返回顶部
顶部
返回顶部
顶部