Re: [問題] 如何在父程序結束後不終止子程序

看板Python作者 (←這人是超級笨蛋)時間14年前 (2011/07/14 22:38), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串3/5 (看更多)
※ 引述《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
文章代碼(AID): #1E7lzc4y (Python)
討論串 (同標題文章)
文章代碼(AID): #1E7lzc4y (Python)