繁体   English   中英

杀死进程&#39;[avconv] <defunct> “

[英]Kill process '[avconv] <defunct>'

我有超过30个进程'[avconv]'(我在脚本中有一个错误),使用此命令我找到这些进程:

Ps aux | grep '\[avconv\] <defunct>' 

但我不知道如何杀死这些过程,任何人都有想法杀死这些过程?

谢谢

<defunct>进程是一个已经终止的进程,因此无法被终止,但是父进程还没有调用其中一个等待系统调用( waitwait3wait4waitpid等等)来读取它的退出状态。 因此,如果父母最终尝试获取其状态,系统将保留过程信息。 当父母读取他们的退出状态时,这些过程消失。

当父进程被终止时,这些<defunct>进程也会消失,因为init进程将获取进程的所有权并获取(并丢弃)其状态。

您可以通过确保在发出fork调用时发出尽可能多的wait系统调用来避免<defunct>进程。

或者,正如JF Sebastian指出的那样,您也可以通过将SIGCHLD信号处置设置为SIG_IGN(忽略信号)或在注册SIGCHLD信号处理程序时使用SA_NOCLDWAIT标志(或重置默认处置时)来避免<defunct>进程SIG_DFL)使用sigaction 但是,在这种情况下,子项的退出状态将不会对父项可用 - 它只是被丢弃。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM