首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python os.system()在命令尚未完成时自动退出

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

Stack Overflow用户
提问于 2012-04-15 17:40:49
回答 1查看 5.4K关注 0票数 2

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

这里有一种情况,cmd需要5-6分钟才能完成,我经常运行这个cmd,它可以工作,但当我将它放入os.system(cmd)时,os.system(cmd)会在cmd还没有完成时自动退出。

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

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-15 17:59:35

你试过subprocess模块了吗?添加它是为了在其他较旧的os方法中替换os.system。以下内容与文档中的内容非常直接:

代码语言:javascript
复制
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)

或者,如果您正在尝试调试进程退出的原因:

代码语言:javascript
复制
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
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10160961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档