使用Python 3.2,和下面的代碼片段:蟒子溝通掛起調用shell腳本
p = subprocess.Popen(['../start_server.sh'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out,err = p.communicate()
if out != None :
out = out.decode('utf-8')
if err != None :
err = err.decode('utf-8')
print('out ',out)
print('err ',err)
一些shell腳本,它工作得很好,我得到我的輸出。在別人身上它只是掛起。但在任何情況下,shell腳本都從命令行運行,沒有任何錯誤。我能看到的唯一通用性(通常)是掛起的零輸出。當東西失敗了,我檢查正在運行的進程,我看到我的shell腳本沒有列出,Python腳本仍在運行
請告訴我一個可靠的方法來調用一個shell腳本和總是返回控制到我的Python程序?
編輯:
使用管道POPEN而這樣是不是必需的,唯一的要求是shell腳本退出時控制返回到我的Python腳本。如果shell腳本永遠不會返回到命令提示符,那麼我的python腳本也將永遠不會返回。
因此,假設我所調用的shell腳本總是返回到命令提示符,那麼我怎樣才能控制回到我的python程序?
如果那裏有一個更好的辦法是什麼香港專業教育學院上面列出 - 請賜教
一個額外位香港專業教育學院發現是shell腳本「掛起」似乎與以「nohup的」葉打電話,他們返回到命令結束沒有問題的提示。
它可能是你的腳本正在做的事情(產卵另一個過程)? – jdigital
我的代碼片段調用各種shell腳本。他們都可以啓動一個新流程,或停止一個現有流程。有些工作,有些則沒有。但是在任何情況下,shell腳本都可以在命令提示符下正常運行,不會產生任何錯誤並執行它們應有的操作。我試圖自動調用我們現有的生產腳本,所以對它們進行更改是不可能的。 – Jon
我並不是建議你改變任何事情,我給你一個提示,要尋找的東西,這可能會幫助你確定問題的原因。 – jdigital