Ich muss bei einem Skript, das die Blockierung von io blockiert, Timeouts geben.
Überraschenderweise stellt sich heraus, dass exit
hängt, wenn eine offene Pipe zu einem Subprozess existiert:
Ohne open
call funktioniert es, das Entfernen ist leider keine Option, in diesem Fall benötigt das Skript es.
Sieht so aus, als ob exit
versucht, das Dateihandle zu schließen, und das hängt davon ab:
Ich schätze, es ist nicht besonders glücklich, das Kind in einem Signalhandler zu ernten ...
Weiß jemand einen guten Weg dazu?
Die Verwendung von POSIX::_exit()
direkt, wie die Man-Seite vermuten lässt, scheint dieses spezielle Problem zu umgehen. Aber das riecht nach einem A-B-Problem. Sind Sie sicher, dass Ihr eigentliches Problem nicht besser gelöst werden kann, wenn Sie Subprozesse komplexer handhaben als einfache Pipes, wie zum Beispiel IPC::Run
?