2014-12-06 81 views
3

我以前問過一個question關於如何設置一個tkinter gui來接收來自子進程的行,而不會掛起整個程序。這現在是功能。如何發送一個新的命令到一個子進程

現在,我不知道如何發送新行到子進程。我試過使用process.communicate,但我可能一直在錯誤地使用它。我也試過this question's solution,但self.process.stdin.write('stop\n'.encode())似乎不起作用。我如何發送新的命令到子python子進程?

相關的代碼:

self.process = subprocess.Popen([ "python", "-u", dir + "start.py" ], 
    stdout=subprocess.PIPE, 
    stdin=subprocess.PIPE, 
    stderr=subprocess.PIPE, 
    cwd=dir) 
+0

這應該工作....假設'start.py'正在讀取標準輸入。 start.py是否會產生大量輸出(可能會掛在輸出管道上),還是它正在爲控制終端執行「到達」stdin(例如,提示輸入密碼)的內容。這是Linux還是Windows? – tdelaney 2014-12-06 19:07:47

+0

您可以添加'self.process.stdin.flush()',但我認爲它的行緩衝。值得一槍,但。 – tdelaney 2014-12-06 19:08:46

+0

工作正常!非常感謝!你想寫這個答案作爲這個問題的答案,還是我應該? – 2014-12-06 19:44:51

回答

3

的數據可被卡在管。寫入後添加self.process.stdin.flush()

相關問題