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

守护进程和fork()以及管道通信的结合

    来源: 互联网  发布时间:2016-06-05

    本文导语:  描述得有点长,希望大家耐心地看完。。。 有这么一个结构: 进程A:调用了daemon()函数,脱壳成为守护进程。         然后调用fork()函数,执行execlp()开启一子进程B。此时父进程即A本身并没有退出,而是通过管...

描述得有点长,希望大家耐心地看完。。。

有这么一个结构:
进程A:调用了daemon()函数,脱壳成为守护进程。
        然后调用fork()函数,执行execlp()开启一子进程B。此时父进程即A本身并没有退出,而是通过管道与子进程B通信(心跳检测)。
子进程B:随便一个可以长久运行的独立程序。其中包含了管道通信模块,即程序一旦开启,立即通过管道取得与进程A的通信。

实际上这个结构的目的就是:通过A来监控B。

现在的问题是:

单独运行A,即调用daemon()后,不调用fork(),execlp()开启子进程B.CPU利用率正常。
单独运行B,即不通过A来开启B。B的本身没有问题,正常。CPU利用率 2%左右。

通过A开启B,并通过管道通信。CPU利用率达100%!!!!

去除管道通信模块,即单纯地利用A开启B,CPU利用率仍100%!!!

A中去除daemon()函数,即以普通程序形态开启B,CPU利用率正常!添加管道通信模块也没什么影响。

先开启A程序(精灵形态,即包含daemon()函数),并开启通信模块。单独运行B,开启通信模块与A取得通信。CPU利用率也正常!

我是不是可以得出:在A的精灵形态中开启子进程B是有问题的(至少表现是这样!)

难道在一个精灵形态的进程中利用fork()开启另外一个子程序,对这个子进程有什么特别限制???因为A的精灵形态中开启另外一个子进程C却没这个问题!

谁能救救我????崩溃了都

|
把代码贴上来...

|

关注

|
楼主,换个顺序看下。
先fork出B,然后再使A成为守护进程。

|
你程序B的log打印到什么地方去了?

|
楼主就是想AB都是守护进程吧? 

|
你还不如用Socket来通信算了

|
用WAITPID的方式也可以吧,用管道写的是不是有点复杂了?
把代码拿来看看嘛

|


那你还顺序测了没?用管道通信就可以实现了啊

|
    我估计楼主管道未设置正确,导致管道出现死循环,以至CPU100%。本人曾写过相似的守护进程,在进程里调用Java虚拟机,并通过管道来通讯。

|
strace跟一下试试。

    
 
 

您可能感兴趣的文章:

  • 安全管道守护进程 Spiped
  • 守护进程调用普通进程,可以使其变成守护进程吗?
  • 孤儿进程与守护进程有何实质区别
  • 通过windows前台界面监控unix守护进程与守护运行的日志
  • 求教 "客户进程" 与 "守护进程" 间通信问题
  • Linux守护进程 的子进程 终端处理
  • 如何用函数判断某个守护进程处入运行中
  • 守护进程接收信号杀死或重启子进程 如何实现?
  • 在linux中如何关闭或者停用守护进程
  • 调用守护进程
  • 守护进程为什么要忽略SIGHUP信号呢?
  • 守护进程的信号问题(UNIX环境高级编程 中的问题)
  • 请问大家shell属于守护进程吗?
  • 如何用守护进程来监控另一个进程的状态
  • 进程守护者 process-monitor
  • 怎么向守护进程发SIGHUP
  • 守护进程里开线程可以吗?这样好不好?
  • 守护进程里如何运行另一程序?
  • 请教:在进程运行中将其转换成守护进程会怎么样?
  • 系统日志守护进程 sysklogd
  • 数字电视守护进程 GNOME DVB Daemon
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 守护程序启动的怪问题
  • 在SOLARIS下如何把程序设为守护
  • 写一个主目录下修改文件内容,用守护进程把这个动作写在日志上
  • 请问:为什么我在守护进程里面用pthread_create来启动线程,经常会卡在那里阿?
  • Postfix 邮件策略守护进程 Valvula
  • GPS 跟踪器守护进程 g7ctrl
  • 比特币守护程序 Freecoin
  • Gopher协议守护进程 Geomyidae
  • 网络接口事件日志守护进程 NIELD
  • TCP 网关守护进程 mochad
  • HTTP服务守护进程 DHTTPD
  • 声音启发守护进程 EsounD
  • C语言实现的mogstored守护进程 cmogstored
  • 路由守护进程 BIRD
  • 守护进程?
  • 问一个守护进程的问题
  • 关于 :启动 hal 守护进程
  • 守护进程与后台程序有何区别?
  • 守护进程自启动问题
  • 一个守护进程在里面printf想输出点东西为什么不输出?


  • 站内导航:


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

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

    浙ICP备11055608号-3