Ich weiß, dass dies eine häufig gestellte Frage ist, und ich habe versucht, jede Lösung Ansatz, den ich hier und auf anderen Seiten finden konnte^aber konnte mein Problem nicht lösen. Mein Dilemma sieht wie folgt aus (unter Windows):Python Subprozess kommunizieren hängt
Ich habe ein Hauptscript (main.py), wo ich einen Unterprozess über Popen erstellen ein anderes Skript (sniffer.py) aufrufen. Danach mache ich ein paar Sachen in main.py und möchte schließlich ein Zeichen an den Subprozess senden, um die Endlosschleife in sniffer.py und schließlich den gesamten Subprozess zu beenden.
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
Ich habe auch die Kommunikation Anruf mit einem stdin.write zu kombinieren versucht, aber es hatte keine Wirkung.
Anmerkung: Ich habe bemerkt, dass, in sniffer.py die while-Schleife nicht nach meinem kommunizieren() -Aufruf nicht weiter (das gesamte Skript hängt nur)
Können Sie angeben, wie speziell es nicht funktioniert hat? Bitte geben Sie Ihre Ausgabe an, um das Debuggen zu erleichtern. – AndyW
Ich habe meine Frage bearbeitet – braheem38