当前位置:  技术问答>linux和unix

将SIGCHLD设置为忽略,但又想调用wait,怎么办?

    来源: 互联网  发布时间:2017-03-03

    本文导语:  我的程序是一个网络服务程序,主进程在监听一个端口,收到新连接后,就fork一个子进程,由子进程处理这个连接、处理业务,父进程继续监听。 这个服务程序,对性能、并发的要求比较高,所以将在父进程里将SIG...

我的程序是一个网络服务程序,主进程在监听一个端口,收到新连接后,就fork一个子进程,由子进程处理这个连接、处理业务,父进程继续监听。

这个服务程序,对性能、并发的要求比较高,所以将在父进程里将SIGCHLD设置为忽略。

本来,这个方案没有什么问题,这个服务程序也用了很长时间,经受住了考验。

现在有新需求了,问题也来了:
在子进程处理的业务中,需要调用system函数,执行几个Shell命令;但是system函数的实现中就调用了wait函数(也可能是waitpid),因此每次调用system都会在终端输出一段话,大意是“已经将SIGCHLD设置为忽略,但是又调用了wait函数....”,更要命的是 这个systen调用导致子进程异常、退出。

请问,有什么方法避免上述情况呢?

|
试试 pipe + fork + execve 吧,不知道行不行...

|
用 popen 或者  fork + exec 试试。

|
改需求真要命。

那你现在还必须SIGCHLD设置为忽略吗?如果是的话,那只能放弃system,改用fork+execl来处理。

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • SIGCHLD信号的问题
  • 进程Afork进程B,进程Bfor进程C,如果进程C退出发出SIGCHLD,A进程是否可以收到
  • a question: about SIGCHLD, thanks
  • 关于SIGCHLD信号问题


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3