我想终止一个子流程,但它不起作用。这是我的代码:
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()
你知道为什么吗?
格尔茨
答案 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)