我正在尝试运行一个脚本,该脚本启动一个cmd命令(在本例中为ping),并使用CTRL + C将该脚本停止在中间。
对我来说重要的是它将是CTRL + C而不是残酷的关机,因为某些命令只有在正确终止后才能终止并保存输出文件(例如Tshark)。
import subprocess
import threading as th
import time
import sys
import signal
import os
import psutil
cmd = "ping -n 5 www.google.com"
def act():
time.sleep(2)
os.kill(p.pid, signal.CTRL_C_EVENT)
def read_p():
global p
p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
while True:
out = p.stdout.readline()
if out == '' and p.poll() != None:
break
if out != '':
print out
thread_one = th.Thread(target=act)
thread_two = th.Thread(target=read_p)
thread_two.start()
thread_one.start()
thread_two.join()
thread_one.join()
在运行过程中,尝试执行os.kill,但返回WindowsError: [Error 6] The handle is invalid