我有两个半依赖的python脚本。即使ScriptB没有,ScriptA也应该运行。相反,ScriptB只应在ScriptA运行时继续。
我的想法就像是
proc = subprocess.Popen(["ps aux | grep scriptA.py | wc -l"],shell=True,STDOUT=X)
并以某种方式检查结果是否为2
(由于grep而为1
)。
我在python控制台中测试时收到2
,但是我很难保存stdout。试图使用stdout=variable
,但失败了。当我使用string
子流程失败时(使用c2pwrite = stdout.fileno()
),当使用int
时,它始终为0.
答案 0 :(得分:2)
你可以这样做:
import subprocess
process = subprocess.Popen(['pgrep', 'scriptA.py'], stdout=subprocess.PIPE)
process.wait()
if not process.returncode:
print "Process running"
else:
print "Process not running"
在这里,我使用pgrep搜索进程,并检查其返回代码而不是其输出。
如果您想使用标准输出,可以使用process.stdout
。
它是一个类似对象的文件。
答案 1 :(得分:1)
为什么不使用Popen.poll()?如果它返回None
,则该进程尚未终止。如果它返回一个数字,那么它就是该过程的退出代码。