我尝试为此python bug来电subprocess
提出解决方法。我想方法是将os.system
与os.waitpid
结合使用。为了测试这个,我编写了下面的代码。 system_call_test.py
将pid
和许多文本写入文件f
。但是,调用os.waitpid()
总是会给我这个错误:OSError: [Errno 10] No child processes
。所以我很难检查这个结构是否正常工作。如何确保脚本等待另一个脚本的终止。我在Windows XP / python 2.7上。
import os
f = r'D:\temp\called.txt'
s = os.system('C:\Python27\python.exe D:\python_spullen\system_call_test.py')
with open(f, 'r') as f_in:
i = f_in.readline()[-4:]
print i
rr = os.waitpid(int(i),0)
print rr
答案 0 :(得分:1)
os.system
返回the exit code of the process。因此,上面的s
已经填充,并且该流程已退出。 os.waitpid
无需等待。
答案 1 :(得分:1)
system()
是fork()
+ exec()
+ waitpid()
的组合。您不应该再次致电waitpid()
。