命令尚未完成时,Python os.system()会自动退出

时间:2012-04-15 09:40:49

标签: python os.system

目前我正在使用python os.system(cmd)做一些日常工作。

以下是一种情况,cmd需要5-6分钟才能完成,而且我会手动运行此cmd,但是当我将其放入os.system(cmd)时,os.system(cmd)会自动退出cmd尚未完成。

所以我的问题是:如何处理这个问题,设置超时值还是有更好的方法来完成这项工作?

提前致谢!

1 个答案:

答案 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