社区
Linux/Unix社区
帖子详情
如何让子进程在父进程结束时(任意情况)也自动结束?
candc
2004-04-13 08:08:09
另外,我只知道该进程的名字,我怎么在另一个程序开始运行时知道之前所述进程是否在运行?目前知道的办法是:ps,然后查找。谁有高见?多谢!
...全文
786
7
打赏
收藏
如何让子进程在父进程结束时(任意情况)也自动结束?
另外,我只知道该进程的名字,我怎么在另一个程序开始运行时知道之前所述进程是否在运行?目前知道的办法是:ps,然后查找。谁有高见?多谢!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
firstyi
2004-04-14
打赏
举报
回复
mark
hiphop
2004-04-14
打赏
举报
回复
9 给定一个进程号,我怎样知道它是个正在运行的程序?
=====================================================
使用‘kill()’函数,而已0作为信号代码(signal number)。
从这个函数返回有四种可能的结果:
* ‘kill()’返回0
- 这意味着一个给定此进程号的进程退出,系统允许你向它发送信号。该进
程是否可以是僵死进程与不同系统有关。
* ‘kill()’返回-1,‘errno == ESRCH’
- 要么不存在给定进程号的进程,要么增强的安全机制导致系统否认它的存
在。(在一些系统上,这个进程有可能是僵死进程。)
* ‘kill()’返回-1,‘errno == EPERM’
- 系统不允许你杀死(kill)这个特定进程。这意味着要么进程存在(它又可能是
僵死进程),要么严格的增强安全机制起作用(比如你的进程不允许发送信号
给*任何人*)。
* ‘kill()’返回-1,伴以其它‘errno’值
- 你有麻烦了!
用的最多的技巧是认为调用“成功”或伴以‘EPERM’的“失败”意味着进程存
在,而其它错误意味着它不存在。
如果你特别为提供‘/proc’文件系统的系统(或所有类似系统)写程序,一个替换
方法存在:检查‘proc/进程号’是否存在是可行的。
longenic
2004-04-14
打赏
举报
回复
waitpid 是只针对子进程而言,
我想可以用信号实现, 但这个信号要自己定义,像用UNIX信号里面的处定义信号,SIGUSR,或SIGSUR2 ,当父进程退出的时候就发出自定义的信号,
如果是父进程非正常退出, 它也会发出一个SIGTERM的信号, 进行相应的处理就可以了
candc
2004-04-14
打赏
举报
回复
对,我想做到的就是想让子进程知道父进程的退出,这有可能是异常错误导致的。不过,我想楼上说的waitpid还真的可以考虑,谢谢!另外,什么叫异步使用啊?
leonf
2004-04-13
打赏
举报
回复
对了是任何情况退出啊,呵呵,不好意思没看清楚。
在子进程里面异步使用waitpid()实现监控父进程。
leonf
2004-04-13
打赏
举报
回复
父进程总有子进程的ID吧,发一个signal给子进程让他退出就好了。
truebjhz
2004-04-13
打赏
举报
回复
可以用进程间同步和通信的机制实现啊。
比如,子进程运行的过程中监视一个event,父进程结束时先置一下这个event,
子进程检测到后就退出。
当然你要说父进程出现了CORE之类的非法操作,那就难说了,这时应该想办法解决父进程的问题。
event是windows上的叫法,在linux上我不知道叫什么,但是方法应该是一样的。
子
进程
及
时
知道
父
进程
已经退出的最简单方案
[精彩]
子
进程
及
时
知道
父
进程
已经退出的最简单方案?http://www.chinaunix.net 作者:yuonunix 发表于:2003-10-31 10:14:14【发表评论】 【查看原文】 【C/C++讨论区】【关闭】
要
父
进程
知道
子
进程
退出,这太容易了,但是要
子
进程
知道
父
进程
退出,可有点麻烦。
父
进程
如果退出,
子
进程
如何知道呢,最笨的方法,
父
子
进程
之间建立socket连接,然后建立心跳,没隔1秒测试一把,当然太笨了,通过管道
进程
创建,
父
子
进程
,
进程
回收,
进程
结束
(一)
进程
的创建-fork 头文件 #include <unistd.h> pid_t fork(void); a)用来创建一个新的
进程
,调用成功后,将存在两个
进程
,每个
进程
都从fork()的返回处继续执行。两个
进程
执行相同的程序文本段,但各自拥有不同的栈段、数据段和堆段,因为
子
进程
对其
父
进程
的堆段、栈段以及数据段进行了拷贝。 b)fork() 调用成功后,在
父
进程
中返回
子
进程
的 ...
Linux
父
进程
子
进程
回收,5、
子
进程
回收(wait和waitpid)
一个
进程
在终止
时
会关闭所有文件描述符,释放在用户空间分配的内存,但它的PCB还保留着,内核在其中保存了一些信息:如果是正常终止则保存着退出状态,如果是异常终止则保存着导致该
进程
终止的信号是哪个。这个
进程
的
父
进程
可以调用wait或waitpid获取这些信息,然后彻底清除掉这个
进程
。我们知道一个
进程
的退出状态可以在Shell中用特殊变量$?查看,因为Shell是它的
父
进程
,当它终止
时
Shell调用wa...
Linux
进程
_03
Linux
进程
_036.
进程
结束
时
的资源问题6.1僵尸
进程
6.2孤儿
进程
6.3
父
进程
wait回收
子
进程
6.
进程
结束
时
的资源问题
进程
的
结束
分为正常终止(运行完后正常退出)和非正常终止(发生某种异常如访问非法内存等异常退出,被kill而退出)。
进程
在运行
时
需要消耗系统资源(内存、IO),
进程
终止
时
理应完全释放这些资源。 在Linux系统中,每一个
进程
退出
时
,操作系统会
自动
回收这个
进程
涉及到的...
Linux
进程
--
父
进程
查询
子
进程
的退出状态
转载至文章: linux系统编程之
进程
(六):
父
进程
查询
子
进程
的退出,wait,waitpid本节目标: 僵尸
进程
SIGCHLD wait waitpid 僵尸
进程
当一个
子
进程
先于
父
进程
结束
运行
时
,它与其
父
进程
之间的关联还会保持到
父
进程
也正常地
结束
运行,或者
父
进程
调用了wait才告终止。
子
进程
退出
时
,内核将
子
进程
置为僵尸状态,这个
进程
称为僵尸
进程
,它只保留最小的一些内核数据结构,以便
父
进程
查询子进
Linux/Unix社区
23,217
社区成员
74,540
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章