Re: [問題] 如何在父程序結束後不終止子程序
※ 引述《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
→
07/14 22:40, , 1F
07/14 22:40, 1F
討論串 (同標題文章)
Python 近期熱門文章
PTT數位生活區 即時熱門文章