Code: Select all
signal.signal(signal.SIGCHLD, handle_sigchld)
t = threading.Thread(target=run_main_loop)
t.start()
try:
t.join()
except KeyboardInterrupt:
stop_main_loop()
t.join()
Um dieses Problem zu umgehen, starte ich den Unterprozess wie folgt:
Code: Select all
def start_subprocess():
subprocess.Popen(...)
# from the main loop's thread
t = threading.Thread(target=start_subprocess)
t.start()
t.join()
Die Hauptfrage ist: Was passiert hier? Ist das ein Fehler in der Python-Implementierung oder ist nur die Dokumentation unklar? Gibt es eine elegantere Möglichkeit, das Problem zu lösen?
Die Nebenfrage ist, ob meine ursprüngliche Annahme zutrifft, dass ich nicht dieselben Thread-Synchronisierungsmethoden vom Signalhandler und vom Hauptthread verwenden kann? Wenn nicht, warum nicht?
Mobile version