杀死一个进程会让僵尸进程困扰我......:(

发布于 2024-12-02 05:31:05 字数 253 浏览 0 评论 0原文

我有一个程序,其中我使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

不再见 2024-12-09 05:31:05

即使您杀死孩子,您仍然需要等待

Even if you kill the child, you still need to wait for it.

三人与歌 2024-12-09 05:31:05

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

You must listen for SIGCHLD in the parent process and get the exit code of the child using wait() et al.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文