【发布时间】:2015-03-22 04:17:02
【问题描述】:
我创建了一个脚本,它应该运行一个命令并在 15 秒后终止它
import logging
import subprocess
import time
import os
import sys
import signal
#cmd = "ping 192.168.1.1 -t"
cmd = "C:\\MyAPP\MyExe.exe -t 80 -I C:\MyApp\Temp -M Documents"
proc=subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT,shell=True)
**for line in proc.stdout:
print (line.decode("utf-8"), end='')**
time.sleep(15)
os.kill(proc.pid, signal.SIGTERM)
#proc.kill() #Tried this too but no luck
这不会终止我的子进程。但是,如果我将日志记录注释到标准输出部分,即
for line in proc.stdout:
print (line.decode("utf-8"), end='')
子进程已被杀死。
我也试过proc.kill() and CTRL_C_EVENT,但没有运气。
任何帮助将不胜感激。请把我看成是python的新手
【问题讨论】:
-
@JohnZwinck:解决方案对我不起作用。
-
“它不起作用”通常不是一个有用的回答。
-
我已经使用 subprocess 创建进程并希望在它运行 15 秒后将其杀死。你引用的问题中给出的解决方案是用子进程处理它。我发现的另一个相关问题是stackoverflow.com/questions/4084322/…
标签: python windows subprocess