社区
Linux_Kernel
帖子详情
如何得知子孙进程中有孤立进程产生
vollin
2005-10-24 04:36:37
在正常的操作下,init确定getty正在工作着(用以允许用户登录),并且收取孤立进程(父辈进程已结束的进程;在UNIX中所有的进程必须属于单棵进程树,所以孤立进程必须被收取)。
请问init是如何知道有孤立进程产生的呢?
如果我想自己维护一棵进程树,即一个类似init的进程,要知道何时我的子孙进程中产生了一个孤立进程,并将其收取.
...全文
145
11
打赏
收藏
如何得知子孙进程中有孤立进程产生
在正常的操作下,init确定getty正在工作着(用以允许用户登录),并且收取孤立进程(父辈进程已结束的进程;在UNIX中所有的进程必须属于单棵进程树,所以孤立进程必须被收取)。 请问init是如何知道有孤立进程产生的呢? 如果我想自己维护一棵进程树,即一个类似init的进程,要知道何时我的子孙进程中产生了一个孤立进程,并将其收取.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
oldbiestar
2005-10-28
打赏
举报
回复
哦,对,我搞错了,父进程结束的进程的确是成为init的子进程(这个可以参考APUE第八章,但是我好像曾经在哪里看到过父进程结束的进程的父进程被设置为原父进程的父进程的这个说法,有待进一步查证)。
不过,这个行为是kernel完成的我并没有说错。
--------------------------------------------------
在一个进程终止时,内核逐个检查所有活动进程,以判断它是否是正要终止的进程的子进程,如果是,则该进程的父进程I D就更改为1(init进程的ID)
--------------------------------------------------
引自APUE第八章第五节
vollin
2005-10-28
打赏
举报
回复
tb01412(tb)
不对吧,做个很小的实验就可以知道了,并不是将子进程的父进程指定为结束进程的父进程,
而是被init接收了。看样子,这个问题是没有办法了。
vollin
2005-10-26
打赏
举报
回复
再次感谢。:)
tb01412
2005-10-26
打赏
举报
回复
内核在处理_exit系统调用时,就会将结束的进程的资源释放,在释放任务结构时就会将它的子进程的父进程标识指向所结束的进程的父进程
yyy790601
2005-10-26
打赏
举报
回复
那就复杂点。
1.system("ps -Al >log");
2.分析文件log,提取PPID=1的进程。
3.利用kill()或者singal()进行相应处理。
但是问题是并非所有ppid=1的进程都是孤立进程,还需别的判断。建议参考《UNIX环境高级编程》第九章。
vollin
2005-10-26
打赏
举报
回复
这个帖子我最开始发表在程序开发区,不过没有人能回答所以移到这里,希望高手们帮忙。
yyy790601
2005-10-25
打赏
举报
回复
子进程里调用getppid(),得到父进程pid,如果是1,发信号给你的init进程,通知现在是孤儿进程。
vollin
2005-10-25
打赏
举报
回复
是不是我发错了地方?有没有人告诉我可以在什么地方得到答案?谢谢各位了。
vollin
2005-10-25
打赏
举报
回复
yyy790601的答案倒是很特别,不过如果这些子进程都不是自己写的程序,那如何去规范它呢?
如果是我自己写的程序,我就直接把所有的pid都记录下来不就行了。还用得着这样吗?
不过还是很感谢你的答案,如果过两天没有人提供答案,分就是你的了。
vollin
2005-10-24
打赏
举报
回复
兄台,不对啊,当一个进程结束时,会将其子进程设为init(1)的子进程。
oldbiestar
2005-10-24
打赏
举报
回复
一个进程结束的时候kernel自己会把这个进程的子进程设置为这个结束的进程的父进程的子进程……这个不需要额外的干预,kernel自己完成……
操作系统笔记 第二章
进程
控制与同步
系统中运行的
进程
并不都是
孤立
的,有的
进程
运行后,会调用其他
进程
来执行,这样就组成了
进程
间的父子关系。 1.
进程
的创建 1)一个
进程
创建另一
进程
的事件(原因) 用户登录:分时情况下用户的请求 作业调度:...
进程
控制
系统中运行的
进程
并不是
孤立
的,有的
进程
运行后,会调用其他
进程
来执行,这样就组成了
进程
间的父子关系。
进程
间的父子关系关系着资源的继承。创建和撤销
进程
时,其父、子
进程
要相应的被影响。 1.
进程
的创建 1)一个...
第二章
进程
控制与同步
系统中运行的
进程
并不都是
孤立
的,有的
进程
运行后,会调用其他
进程
来执行,这样就组成了
进程
间的父子关系。可用 “
进程
图”描述一个
进程
的家族关系,该图实际就是一种有向树。 1.
进程
的创建 1)一个
进程
创建另一...
进程
——
进程
控制与同步
系统中运行的
进程
并不都是
孤立
的,有的
进程
运行后,会调用其他
进程
来执行,这样就组成了
进程
间的父子关系。
进程
的创建 1)一个
进程
创建另一
进程
的事件(原因) 用户登录:分时情况下用户的请求 *作业调度:...
进程
控制与同步
系统中运行的
进程
并不都是
孤立
的,有的
进程
运行后,会调用其他
进程
来执行, 这样就组成了
进程
间的父子关系。 可用 “
进程
图”描述一个
进程
的家族关系,该图实际就是一种有向树。 感受
进程
及
进程
树 1.“运行”——...
Linux_Kernel
4,436
社区成员
17,460
社区内容
发帖
与我相关
我的任务
Linux_Kernel
Linux/Unix社区 内核源代码研究区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章