如果输出中有字符串,我正在尝试终止子进程 pid,但它不起作用。怎么了?
import subprocess
import shlex
if "PING" in subprocess.check_call(shlex.split("ping -c 10 gogole.com")):
subprocess.check_call(shlex.split("ping -c 10 gogole.com")).terminate()
如果输出中有字符串,我正在尝试终止子进程 pid,但它不起作用。怎么了?
import subprocess
import shlex
if "PING" in subprocess.check_call(shlex.split("ping -c 10 gogole.com")):
subprocess.check_call(shlex.split("ping -c 10 gogole.com")).terminate()
import subprocess, os
run = "ping -c 10 google.com"
log = ""
process = subprocess.Popen(run, stdout=subprocess.PIPE, shell=True)
while True:
out = process.stdout.read(1)
log +=out
print log
if out == '' and process.poll() != None:
break
if "PING" in log:
print "terminated!"
process.kill()
process.terminate()
break
有关您调用的方法,请参阅文档。首先,check_call一直执行到进程结束,然后从进程返回返回码。我不确定您打算如何从通常是整数的返回码中找到“PING”。
如果它在那里,请查看if
语句的主体:您创建一个全新的 实例ping
,等待它完成,然后尝试终止返回代码。
我建议您阅读有关子流程的教程。了解如何获取进程句柄并在其上调用操作。您需要获取输出流的句柄,在其中查找“PING” ,然后调用terminate
您在调用时获得的进程句柄。