Thread ^C in Script abfangen, nach SIG{INT} weitere Befehle ausführen (6 answers)
Opened by YAPD at 2015-10-04 23:11

Linuxer
 2015-10-05 10:45
#182501 #182501
User since
2006-01-27
3890 Artikel
HausmeisterIn

user image
Wenn Du direkt mit Perldoc:perlfunc exec ein anderes Programm startest, übernimmt das die PID des aufrufenden Programms, welches selbst beendet wird. Da ist keine Kontrolle oder Rückkehr ins aufrufende Programm mehr möglich.
Wenn Du weißt, dass ein per Perldoc:perlfunc system aufgerufenes Programm maximal X Sekunden brauchen darf, kannst Du mit Perldoc:perlfunc alarm arbeiten und im Fall des Falles das aufgerufene Programm beenden lassen.

Das Problem dürfte da aber sein, dass system() auf Beendigung des Kind-Prozesses wartet und den Exitcode des Kindes liefert. Um die PID zu erhalten, müsste da wohl etwas mehr Aufwand getrieben werden.

Man könnte Perl selber forken lassen und im Kinds-Teil dann mit exec() das externe Programm starten lassen.
Damit hätte man die PID des Kindes, unter der nun das externe Programm läuft. Diese PID könnte man dann im Alarm-Fall auch bearbeiten und ihr Signale via Perldoc:perlfunc kill schicken.
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!

View full thread ^C in Script abfangen, nach SIG{INT} weitere Befehle ausführen