我知道这是一个常见问题,我尝试了任何解决方案,我可以在这里和其他网站上找到^,但无法解决我的问题。 我的困境看起来如下(在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