python 中的终止子进程不起作用
Terminate subprocess in python doesn't work
我想终止一个子进程,但它不起作用。这是我的代码:
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()
你知道为什么吗?
问候
来自文档:
Popen.wait()
Wait for child process to terminate. Set and return returncode attribute.
所以对于 运行 的 if 主体,进程必须先终止,您可以使用 q.poll()
代替,因为它不会阻塞。
这个有效:
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)
我想终止一个子进程,但它不起作用。这是我的代码:
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()
你知道为什么吗?
问候
来自文档:
Popen.wait()
Wait for child process to terminate. Set and return returncode attribute.
所以对于 运行 的 if 主体,进程必须先终止,您可以使用 q.poll()
代替,因为它不会阻塞。
这个有效:
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)