发信人: tcpip (俺的昵称改了), 信区: cnunix
标 题: Re: 如何消除defunct的进程
发信站: 哈工大紫丁香 (Sun Sep 26 16:00:46 1999), 转信
发信人: cpu (奔腾的心), 信区: Solaris
发信站: 华南网木棉站 (Tue Nov 17 16:21:08 1998), 转信
【 在 yingjian (red) 的大作中提到: 】
: 在UNIX下编多进程程序,有时发现系统中会有状态defunct的进程存在,请问这是如何
: 产生的,如何消除?
因为父进程没有在子进程exit的时候调用wait,所以形成defunct进程。子进
程exit的时候会向父进程发SIGCHLD信号,因此在父进程中可以这样处理:
main( )
{
...
void wait_child( );
...
signal(SIGCHLD, wait_child( )); /* 设置SIGCHLD信号处理函数 */
...
}
void wait_child( ) /* 信号处理函数 */
{
int status;
wait(&status); /* 等待子进程退出 */
}
详细man一下signal, wait等调用的用法。
--
******************************************************
青岛啤酒,可能是世界上最好的啤酒 。。。 。。。
******************************************************
※ 修改:.trueip 于 Sep 26 16:04:30 修改本文.[FROM: dns.mtlab.hit.ed]
--
※ 转寄:.华南网木棉站 bbs.gznet.edu.cn.[FROM: dns.mtlab.hit.ed]
--
☆ 来源:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: trueip.bbs@melon.gzn]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.027毫秒