当前位置: 技术问答>linux和unix
子进程怎么知道(判断)父进程被关闭了
来源: 互联网 发布时间:2015-11-24
本文导语: 父进程启动了多个子进程(默认情况下10个子进程),现在问题是: 子进程怎么知道(判断)父进程被关闭了(或者说父进程被异常终了了,没来得及通知子进程) 要求在Unix,Windows系统下的方案。 谢谢!!! ...
父进程启动了多个子进程(默认情况下10个子进程),现在问题是:
子进程怎么知道(判断)父进程被关闭了(或者说父进程被异常终了了,没来得及通知子进程)
要求在Unix,Windows系统下的方案。
谢谢!!!
子进程怎么知道(判断)父进程被关闭了(或者说父进程被异常终了了,没来得及通知子进程)
要求在Unix,Windows系统下的方案。
谢谢!!!
|
捕捉信号,当父进程死掉的时候,会向其所有的子进程发送一个信号,一般不做特殊处理的时候,子进程收到这样的一个信号就会退出运行一起死掉,子进程也可以对这个信号进行不同的处理,当捕捉到父进程死亡的信号时,不是退出而做其他动作。
可以看看信号方面的资料,我没有在这方面做个应用,但是应该是从这方面入手的
可以看看信号方面的资料,我没有在这方面做个应用,但是应该是从这方面入手的
|
你在fork以后
在子进程中保存ppid,然后每隔一段时间就getppid(),比较
在子进程中保存ppid,然后每隔一段时间就getppid(),比较
|
获取父进程的ID,如果是0就表示已经退出
|
getppid()==1就是了。
|
to komit:子进程都挂在init下了。
用管道一类的方法做通信,父进程退出,管道broken,select会有反应的。
用管道一类的方法做通信,父进程退出,管道broken,select会有反应的。
|
系统里面所有的进程的祖先都是init,pid是1
所以当你的父进程退出以后,会给你指定一个父进程的,不会出现没有父进程的情况
父进程和子进程的关系,就是两个进程,你不能说系统里面A进程不存在了,所以B进程也就不存在了,没有管辖的关系
这些在(Novell出版)中有写
所以当你的父进程退出以后,会给你指定一个父进程的,不会出现没有父进程的情况
父进程和子进程的关系,就是两个进程,你不能说系统里面A进程不存在了,所以B进程也就不存在了,没有管辖的关系
这些在(Novell出版)中有写
|
我说说Linux里面进程的家谱吧(应该和Unix差不多),不知道的看看吧,呵呵。
父进程持有最年轻的子进程的引用;
每个子进程都持有一个父进程的引用;
每个子进程都持有父进程创建的(相对于自己)前一个子进程和后一个子进程的一个引用。
父进程持有最年轻的子进程的引用;
每个子进程都持有一个父进程的引用;
每个子进程都持有父进程创建的(相对于自己)前一个子进程和后一个子进程的一个引用。
|
父进程不在了,子进程还会存在吗?否则系统的进程树会是什么样的呢?
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
这位仁兄,守护进程就是这种情况
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
这位仁兄,守护进程就是这种情况
|
建议,实现父进程的atexit函数
具体请查帮助
具体请查帮助
|
getppid()==1
如果老爸先死掉了,那么就托孤给init
如果老爸先死掉了,那么就托孤给init
|
小弟也发表一下灼见吧,首先记录产生的子进程的PID,然后捕获导致你的父进程挂掉的信号,在信号处理函数中向子进程发TERM信号,子进程就跟着挂掉了,呵呵!!!!