2011-07-21 64 views
1

有没有办法检查子进程是否已完成其作业?我的python脚本从cmd执行123.exe。 123.exe然后做一些事情,最后它将1或0写入一个txt文件。然后,Python脚本读取txt文件,如果为'1'则继续作业,如果为'0'则停止。目前我所能想到的一切就是让python脚本睡一会儿。这样123.exe肯定会将1或0写入txt文件。这种认识非常简单,但同时又很愚蠢。Python脚本执行另一个脚本并在第二个脚本完成其作业后恢复

所以我的问题是,有没有办法处理这个问题,而不需要超时?一种使python脚本等待123.exe停止的方法?

回答

3

用途:

retcode = subprocess.call(["123.exe"]) 

这将执行该命令,等待它完成,你会得到它的返回码为retcode(这样你也能避免检查输出状态文件的需要,如果命令返回正确的返回码)。

如果您需要手动将subprocess.Popen实例,然后去

Popen.wait() 

(然后检查Popen.returncode)。

0

试试这个:

p = subprocess(...) 
os.waitpid(p.pid, 0) 

这将等到过程结束,你的脚本将继续从这里开始。

+1

因为子进程本身提供了这个功能,所以不需要使用'os.waitpid().. – redShadow

+0

@redShadow你说的对,使用子进程更合理。 – Woltan

1

我会使用call()速记子进程模块。从文档:

带参数运行命令。等待命令完成,然后返回 returncode属性。

它应该是这样的:

import subprocess 
retcode = subprocess.call(["123.exe"]) 

当然,你不会使用retcode,但你的脚本将无论如何挂起,直到123.exe已终止。

相关问题