2

我有一个使用 fork 的程序。在子进程中,我只需登录到远程服务器并执行命令。在父进程中,我等待子进程完成其任务。如果它没有在预定的时间内完成它,我使用 kill(child_pid, SIGTERM) 杀死子进程。但是我注意到这会留下僵尸进程,例如

93113 s000  Z+ 0:00.00 (ssh)

并且随着超时的增加,僵尸进程也会增加,最终无法再使用 ssh。

我怎样才能杀死子进程而不产生困扰我的僵尸?

4

2 回答 2

5

即使你kill是孩子,你仍然需要wait为它。

于 2011-08-30T10:35:49.947 回答
1

SIGCHLD您必须在父进程中侦听并使用wait()等获取子进程的退出代码。

于 2011-08-30T10:37:36.160 回答