我有30多个进程'avconv‘(脚本中有一个bug ),通过这个命令,我可以找到以下进程:
Ps aux | grep '\[avconv\] <defunct>' 但我不知道如何扼杀这些过程,有谁有办法扼杀这些过程?
谢谢
发布于 2014-02-27 20:39:16
<defunct>进程是一个已经终止的进程,因此不能被终止,但是父进程尚未调用一个等待系统调用(wait、wait3、wait4、waitpid等)。读取其退出状态。因此,进程信息由系统保留,以防父进程最终试图获得其状态。当父进程读取其退出状态时,此类进程将消失。
当父进程被杀死时,这些<defunct>进程也会消失,因为init进程将获得进程的所有权并获得(并放弃)其状态。
您可以通过确保发出与发出<defunct>调用一样多的wait系统调用来避免fork进程。
或者,正如J.F.Sebastian指出的那样,您也可以通过使用<defunct>将SIGCHLD信号处理程序设置为SIG_IGN (忽略信号),或者在注册SIGCHLD信号处理程序时使用SA_NOCLDWAIT标志(或者在使用SIG_DFL重置默认配置时)来避免sigaction进程。但是,在这种情况下,子程序的退出状态将不会提供给父级--它只是被丢弃。
https://stackoverflow.com/questions/22078948
复制相似问题