我使用以下命令启动子进程:
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True)
但是,当我试图用以下方法杀人时:
p.terminate()
或者
p.kill()
该命令一直在后台运行,所以我想知道如何才能真正终止进程。
请注意,当我使用以下命令运行该命令时:
p = subprocess.Popen(cmd.split(), stdout=subprocess.PIPE)
它在发出p.terminate()
时确实成功终止。
Tags:
如果您可以使用psutil,那么这非常有效:
p.kill()
结束了shell进程,cmd
仍在运行。我找到了一个方便的方法:
这将导致cmd继承shell进程,而不是让shell启动一个子进程,该子进程不会被杀死。
p.pid
将是您的cmd进程的id。p.kill()
应该可以。我不知道这会对你的烟斗有什么影响。
使用process group以便能够向组中的所有进程发送信号。为此,应该将session id附加到派生/子进程的父进程,在您的情况下,父进程是shell。这将使它成为流程的组长。所以现在,当一个信号被发送到进程组长时,它被发送到这个组的所有子进程。
代码如下:
相关问题 更多 >
编程相关推荐