【发布时间】:2019-03-14 16:12:27
【问题描述】:
如果输出中有字符串,我正在尝试终止子进程 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()
【问题讨论】:
-
subprocess.check_call()在进程退出之前不会返回,所以没有什么可以终止的。 -
它也不返回进程输出,它返回一个
CompletedProcess对象。如果您想要输出,请使用check_output(),而不是check_call()。 -
如果你想运行一个子进程而不等待它退出,使用
subprocess.Popen()然后从管道中读取。 -
您对 Popen 的看法是正确的。 process = subprocess.Popen(shlex.split("ping -c 10 gogole.com"), stdout=PIPE) readme = process.stdout.read() if "PING" in readme: print "yes, is there"跨度>
标签: python if-statement subprocess shlex