python subprocess.Popen使用子进程终止进程

时间:2017-03-07 12:50:30

标签: python subprocess kill-process

如何使用子进程发送Ctrl-C来处理或终止进程?

我的代码示例(python 2.7):

# --*-- coding: utf-8 --*--
import subprocess
import os
import signal

proc = subprocess.Popen(['ping localhost'],shell=True,stdout=subprocess.PIPE)
print proc.pid

a = raw_input()
os.killpg(proc.pid, signal.SIGTERM)

我在运行程序时会看到下一个进程:

user   16078  0.0  0.0   4476   916 pts/6    S+   14:41   0:00 /bin/sh -c ping localhost
user   16079  0.0  0.0   8628  1908 pts/6    S+   14:41   0:00 ping localhost

节目输出:

16078

raw_input:

Traceback (most recent call last):
  File "subproc2.py", line 10, in <module>
    os.killpg(proc.pid, signal.SIGTERM)
OSError: [Errno 3] No such process

我想杀死进程pid 16078和pid 16079。

我该怎么做以及程序中的错误是什么?感谢帮助。

1 个答案:

答案 0 :(得分:2)

  

我该如何做以及程序中的错误是什么?

如果要杀死进程组中包含的所有进程,则应使用父进程ID。像那样:

os.killpg(os.getpid(), signal.SIGTERM)

如果您只想杀死一个子进程,请使用:

os.kill(proc.pid, signal.SIGTERM)