[英]Kill process '[avconv] <defunct>'
我有超过30个进程'[avconv]'(我在脚本中有一个错误),使用此命令我找到这些进程:
Ps aux | grep '\[avconv\] <defunct>'
但我不知道如何杀死这些过程,任何人都有想法杀死这些过程?
谢谢
<defunct>
进程是一个已经终止的进程,因此无法被终止,但是父进程还没有调用其中一个等待系统调用( wait
, wait3
, wait4
, waitpid
等等)来读取它的退出状态。 因此,如果父母最终尝试获取其状态,系统将保留过程信息。 当父母读取他们的退出状态时,这些过程消失。
当父进程被终止时,这些<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.