Infolge der Beendigung der Shell erfordert POSIX.1-2008 :
Wenn beim Beenden des Prozesses eine Prozessgruppe verwaist wird und ein Mitglied der neu verwaisten Prozessgruppe gestoppt wird, wird ein SIGHUP-Signal gefolgt von einem SIGCONT-Signal an jeden Prozess in der neu verwaisten Prozessgruppe gesendet .
Die Standardaktion beim Empfang von SIGHUP besteht darin, den Prozess zu beenden. Abhängig von der Shell und dem Start des Prozesses sowie von der Signalverarbeitung, die vom Prozess selbst eingerichtet wurde, kann SIGHUP vom Prozess ignoriert werden. In diesem Fall wird der Vorgang normal fortgesetzt.
Es wird davon ausgegangen, dass Prozesse in einer Prozessgruppe, die unter einer Jobsteuerungs-Shell ausgeführt werden, von dieser Shell als Gruppe bearbeitet werden und nicht vom Benutzer, der direkte SIGSTOP- und SIGCONT-Signale sendet. POSIX.1-2008 erklärt:
... Wenn eine Prozessgruppe durch die Beendigung eines Prozesses verwaist wird, werden die Prozesse innerhalb der Gruppe von ihrer Jobsteuerungs-Shell getrennt, die keine Informationen mehr über die Existenz der Prozessgruppe enthält. Angehaltene Prozesse innerhalb der Gruppe würden für immer schmachten. Um dieses Problem zu vermeiden, erhalten neu verwaiste Prozessgruppen, die gestoppte Prozesse enthalten, ein SIGHUP-Signal und ein SIGCONT-Signal, um anzuzeigen, dass sie von ihrer Sitzung getrennt wurden. Das SIGHUP-Signal bewirkt, dass die Prozessgruppenmitglieder beendet werden, es sei denn, sie werden SIGHUP erkannt oder ignoriert. In den meisten Fällen werden alle Mitglieder der Prozessgruppe angehalten, wenn eines von ihnen angehalten wird.
Ein Prozess könnte dieses Verhalten vermeiden, indem er seine eigene session ( setsid()
) fälscht und erstellt, sodass er nicht mehr Teil der Session der Shell ist, in der er gestartet wurde. Die Jobsteuerung innerhalb der Shell, die Beendigung der Shell oder die vom Terminal generierten Signale beeinträchtigen ihn nicht.