如何避免僵尸进程?

loskill 2013-05-31 06:21:54
int main()
{
pid_t pid;
pid=fork();
if(pid==0)
{
cout << "child Hello world!" <<pid<<":"<<getpid()<<endl;
}
else
{
sleep(10);
cout << "Hello world!" <<pid<<":"<<getpid()<<endl;
return 0;
}
}

以上代码由于子进程先于父进程结束,这时子进程会变成僵尸进程,直到父进程结束。请问能有什么办法能避免这种现象?
...全文
177 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
布鲁克斯南南 2013-06-03
  • 打赏
  • 举报
回复
引用 2 楼 qgw_2000 的回复:
或者父进程调用waitpid等待子进程结束。
回收僵尸进程
qq120848369 2013-06-01
  • 打赏
  • 举报
回复
引用 2 楼 qgw_2000 的回复:
或者父进程调用waitpid等待子进程结束。
只能这样了。
qq120848369 2013-06-01
  • 打赏
  • 举报
回复
引用 1 楼 Idle_Cloud 的回复:
可以在父进程中调用用signal(SIGCLD, SIG_IGN)或signal(SIGCHLD, SIG_IGN)。这样就不怕了。
你说的办法不可移植。
qgw_2000 2013-05-31
  • 打赏
  • 举报
回复
或者父进程调用waitpid等待子进程结束。
Carl_CCC 2013-05-31
  • 打赏
  • 举报
回复
可以在父进程中调用用signal(SIGCLD, SIG_IGN)或signal(SIGCHLD, SIG_IGN)。这样就不怕了。

23,125

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧