作者uranusjr (←这人是超级笨蛋)
看板Python
标题Re: [问题] 如何在父程序结束後不终止子程序
时间Thu Jul 14 22:38:28 2011
※ 引述《Holocaust123 (一步一脚印)》之铭言:
: #!/usr/bin/python
: #coding=utf8
: import subprocess
: cmd = 'test.sh'
: p = subprocess.Popen(cmd)
: print 'end of program'
: 假设上面是a.py的内容
: 有几个问题想问:
: 1. 如何让a.py执行时, 不要等待test.sh的执行结果, 而是直接执行print statement
: 我仔细看过 http://docs.python.org/library/subprocess.html 了
: 但这个module似乎没有类似os module的"no wait"功能
咦?
Popen 本来就不会 wait 吧
要强制停下来等它执行完再继续, 必须加上(以你的例子) p.wait() 等 p 结束
除非你把 stdout 或/和 stderr 给 PIPE 到父程序, 那会自动变成 blocking
不过这是非常合理的设定...
: 2. 如何让a.py执行结束後, 不要terminate subprocess(即让test.sh在a.py结束後依然继续执行)
: 目前我找到的方法只能在Linux上使用(用nohup指令)
: 但我想找跨平台的作法, 也就是在Windows或Linux上皆适用的方法
subprocess 创造出来的子程序确实不会在父程序结束後同时停止, 会执行到完啊...
我在 Mac (OS X 10.6) 和 Linux (Mint 10) 上分别用 2.6.x 确认过了, 都一样
不确定 Windows 的状况, 不过应该不会有差才对?
: 这两个问题困扰我很久了, 希望好心人能指点一下
: 如果可以的话希望不要提供deprecated modules的作法, 谢谢
--
"问おう、贵方が私のマスターか?"
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.32.81.146
1F:→ timTan:没错,应该要问如何等小孩结束才对。预设行为是不等小孩的 07/14 22:40