什么是kill
究竟是什么?
我有一个父进程,它正在一个接一个地创建 100 个(作为示例)子进程。在任何 child 的工作结束时,我用 kill(pid_of_child, SIGKILL)
杀死 child 我在 ps
中看不到输出。但是,如果父进程出现问题并且我从父进程退出 exit(1)
(此时只有 1 个 child 在那里 - 我可以在 ps
中查看),那时我看到很多 <defunct>
ppid
的进程是pid
父进程。
这怎么可能?做了kill
不完全杀死子进程?
最佳答案
kill
不会杀死任何东西。它向目标进程发送信号。 SIGKILL
只是一个信号。现在,SIGKILL
的标准操作——实际上,唯一的操作,因为 SIGKILL
不能被进程处理或忽略——是退出,这是真的。
“wait()
来检索退出状态的 child 。在父进程调用 wait()
之前,已失效(或“僵尸”)进程将挂起。
关于c - kill - 它会立即终止进程吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8468866/