是否有方法检查子进程是否已完成其工作?我的python脚本从cmd执行123.exe。exe然后做一些事情,最后它将1或0写入TXT文件。然后Python脚本读取txt文件,如果'1'继续作业,如果'0'停止。现在我所能想到的,就是让python脚本暂时休眠。这样一来,123.exe几乎肯定会将1或0写入txt文件。这种认识很简单,但同时也很愚蠢。
所以我的问题是,有没有一种不需要超时的方法来处理这个问题?一种方法,使python脚本等待,直到123.exe停止?
使用说明:
retcode = subprocess.call(["123.exe"])
这将执行命令,等待直到它完成,并且您将其返回代码放入retcode
(如果命令返回正确的返回代码,这样您还可以避免检查输出状态文件的需要)。
如果需要手动实例化subprocess.Popen
,则选择
Popen.wait()
(然后检查Popen.returncode
)
我将使用子进程模块中的 call()
简写。来自文档:
带参数运行命令。等待命令完成,然后返回returncode属性
它应该是这样工作的:
import subprocess
retcode = subprocess.call(["123.exe"])
当然你不会使用retcode
,但是你的脚本无论如何都会挂起,直到123.exe终止。
试试这个:
p = subprocess(...)
os.waitpid(p.pid, 0)
这将等待过程完成,您的脚本将从这里继续。