我有一个启动任务的Python脚本,就像这样:
import os
os.system("./a.sh")
do_c()
a.sh
是一个启动其他程序的 bash 脚本。该 bash 脚本似乎在所有启动的脚本准备好之前就已经准备好了。
如何等待所有脚本(子进程)就绪后,再执行 do_c()
?
澄清一下:当我说准备好时,我的意思是完成/退出。
示例
run.py
可以更改此文件。但不要依赖于 sleep,因为我不知道 a.py
和 b.py
需要多长时间。
#!/usr/bin/env python
import os
from time import sleep
print("Started run.py")
os.system("./a.py")
print("a is ready.")
print("Now all messages should be there.")
sleep(30)
a.py
这个文件不允许修改:
#!/usr/bin/env python
import subprocess
import sys
print(" Started a.py")
pid = subprocess.Popen([sys.executable, "b.py"])
print(" End of a.py")
b.py
这个文件不允许修改:
#!/usr/bin/env python
from time import sleep
print(" Started b.py")
sleep(10)
print(" Ended b.py")
期望输出
最后一条消息应该是现在所有的消息都应该在那里。
。
当前输出
started run.py
Started a.py
End of a.py
a is ready.
Now all messages should be there.
Started b.py
Ended b.py
script.sh
如何启动其他进程?这些进程中是否有任何一个会变成守护进程? - univerioscript.sh
在它启动的程序退出之前退出,那么等待它们将不容易。你能修改script.sh
让它等待它的子进程吗? - user4815162342script.sh
。我已经添加了一个例子。 - Martin Thoma