c - 僵尸进程无法被杀死

标签 c linux zombie-process

有没有办法杀死僵尸进程?我试过调用 exit 来终止进程,甚至向进程发送 SIGINT 信号,但似乎没有什么可以终止它。我正在为 Linux 编程。

最佳答案

僵尸进程已经死了,所以他们不能被杀死,他们只能被收割,这必须由他们的父进程通过 wait*() 来完成。这通常称为 child reaper 习惯用法,在 SIGCHLD 的信号处理程序中:

while (wait*(... WNOHANG ...)) {
    ...
}

关于c - 僵尸进程无法被杀死,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6335730/

相关文章:

linux - 每五分钟执行一次 Crontab

ruby-on-rails - 使用每个 block 打印所有僵尸的名称

objective-c - 为什么我的程序在使用 self.property 访问属性时会崩溃?和一个合成的访问器?

c - 即使有信号,fork/exec 也会离开僵尸进程

c - 编写一个函数,如果传递给它的 2 个字符串使得第一个字符串的所有字符都唯一地出现在第二个字符串中,则该函数返回 true

c - 试图返回输入(字符数组)中间的字符给出 "segmentation fault (core dumped)"?

c - 是否可以读取另一个线程的程序计数器?

c - UDP 服务器子进程无法发送

c - 在这种情况下,WSASend() 和 WSARecv() 的完成数据包的顺序是什么?

c - 如何将数字与区间进行比较? ( x > (1,10))