2011-04-19 58 views
0

我喜欢从os模块使用system()命令。有没有办法检查命令是否给我回复?我有代码来终止命令,如果它没有在x秒内完成,但我想改进它来终止它,如果它没有在x秒内回复。检查os.system()回复

谢谢!

+0

你是什么意思的'reply'? 'os.system()'返回的唯一值就是退出状态... – 2011-04-19 21:01:06

+0

我在linux上运行..让我说我键入os.system(“ls”)然后它列出所有的文件,这就是我的意思是回复。 – Illusionist 2011-04-20 06:57:51

回答

3

这取决于您的意思与“答复”。 os.system()返回命令的退出状态(这是一个int,成功通常为0)。如果这还不够,请查看subprocess模块。

1

你没有说你在哪个操作系统上运行。唉,Windows和Linux是不同的。这是我做的:

import os 

try: 
    WEXITSTATUS = os.WEXITSTATUS 
except AttributeError: # running on Windows 
    def WEXITSTATUS(arg): 
     return arg 
    os.environ["HOME"] = os.environ["USERPROFILE"] 


if WEXITSTATUS(os.system(cmd)) != 0: 
    pass # bad return value 
else: 
    pass # good return value 
+0

谢谢,但我在linux上运行它 – Illusionist 2011-04-20 06:58:40

+0

然后你需要'os.WEXITSTATUS'来获得退出状态。 – Keith 2011-04-20 11:10:55