杀死一个进程会让僵尸进程困扰我......:(
我有一个程序,其中我使用 fork。在子进程中,我只需登录远程服务器并执行命令。在父进程中,我等待子进程完成其任务。如果它没有在预定的时间内完成,我会使用kill(child_pid, SIGTERM) 终止子进程。 但我注意到这会留下僵尸进程
93113 s000 Z+ 0:00.00 (ssh)
,随着超时的增加,僵尸进程也会增加,最终无法再使用 ssh。
我怎样才能杀死子进程而不创建困扰我的僵尸?
I have a program wherein i use fork. In the child process, i just login to a remote server and executes a command. In the parent process, i wait for the child to finish its task. If it doesnot finish it in a predetermined amount of time, i kill the child process using kill(child_pid, SIGTERM).
But i have noticed that this leaves behind zombie process like
93113 s000 Z+ 0:00.00 (ssh)
and as the timeouts increase, the zombie process also increase and ultimately the ssh cannot be used anymore.
how can i kill the child process without creating zombies that haunt me??
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
即使您
杀死
孩子,您仍然需要等待
。Even if you
kill
the child, you still need towait
for it.您必须在父进程中侦听
SIGCHLD
并使用wait()
等获取子进程的退出代码。You must listen for
SIGCHLD
in the parent process and get the exit code of the child usingwait()
et al.