目前我正在使用python os.system(cmd)
做一些日常工作。
以下是一种情况,cmd需要5-6分钟才能完成,而且我会手动运行此cmd,但是当我将其放入os.system(cmd)
时,os.system(cmd)
会自动退出cmd尚未完成。
所以我的问题是:如何处理这个问题,设置超时值还是有更好的方法来完成这项工作?
提前致谢!
答案 0 :(得分:3)
您是否尝试过subprocess
模块?添加它是为了替换其他较早的os.system
方法中的os
。以下内容几乎直接来自文档:
import os
import subprocess
proc = subprocess.Popen(cmd, shell=True)
pid, sts = os.waitpid(proc.pid, 0)
# you may check on this process later and kill it if it's taking too long
if proc.poll() in [whatever, ...]:
os.kill(proc.pid)
或者如果您正在尝试调试进程退出的原因:
import subprocess
import sys
try:
retcode = subprocess.call(cmd, shell=True)
if retcode < 0:
print >>sys.stderr, "Child was terminated by signal", -retcode
else:
print >>sys.stderr, "Child returned", retcode
except OSError, e:
print >>sys.stderr, "Execution failed:", e