我知道這是一個常見問題,我嘗試了任何解決方案,我可以在這裏和其他網站上找到^,但無法解決我的問題。 我的困境看起來如下(在Windows上):Python子進程通信掛起
我有一個主腳本(main.py),我通過Popen調用另一個腳本(sniffer.py)創建一個子進程。之後,我在main.py中做了一些工作,最後想要發送一個字符到子進程中去完成sniffer.py中的無限循環,最後是整個子進程。
main.py
process = Popen(["python", "sniffer.py", receiverIP, senderIP, "udp", path],stdin=PIPE)
#do some stuff
process.communicate('terminate')
sniffer.py
def check(done):
while True:
if sys.stdin.read() == 'terminate':
done = True
break
def sniff(someparams):
done = False
input_thread = threading.Thread(target=check, args=(done,))
input_thread.daemon = True
input_thread.start()
while True:
#do some stuff
if done:
break
我也嘗試將電話溝通與stdin.write結合,但它沒有任何效果。
注:我注意到,在sniffer.py while循環我交流()調用後不會繼續(整個腳本只是掛起)
你能指定它是如何特別'沒有工作'嗎?請提供您的輸出以幫助調試。 – AndyW
我編輯了我的問題 – braheem38