在python中终止子进程并不起作用

时间:2017-07-05 09:39:30

标签: python-2.7 subprocess terminate kill-process

我想终止一个子流程,但它不起作用。这是我的代码:

import os
import subprocess

p = subprocess.Popen(['gnome-terminal','-e','tshark -i eth0 -w /root/Desktop/test.pcap'])
q = subprocess.Popen(['python','avtp2.py'])

if q.wait() == 0:
  p.terminate()

你知道为什么吗?

格尔茨

2 个答案:

答案 0 :(得分:1)

来自文档:

  

Popen.wait()

     

等待子进程终止。设置并返回returncode属性。

因此,对于运行if的主体,进程必须首先终止,您可以使用q.poll()代替,因为它不会阻塞。

答案 1 :(得分:0)

这有效:

import os
import subprocess
from subprocess import check_output
import signal

p = subprocess.Popen(['gnome-terminal','-e','tshark -i eth0 -w /root/Desktop/test.pcap'],shell=False)
q = subprocess.Popen(['python','avtp2.py'])

if q.wait() == 0:
  p_pid = check_output(["pidof","tshark"]).split()
  os.kill(int(p_pid[0]), signal.SIGINT)