Eine Prozessgruppe ist eine Sammlung verwandter Prozesse, die alle gleichzeitig signalisiert werden können.
Eine Sitzung ist eine Sammlung von Prozessgruppen, die entweder an ein einzelnes Endgerät (als steuerndes Terminal bezeichnet ) oder an kein Terminal angeschlossen sind.
Sitzungen werden zur Jobsteuerung verwendet: Eine der Prozessgruppen in der Sitzung ist die Vordergrundprozessgruppe und kann von Terminalsteuerungszeichen signalisiert werden. Sie können sich eine Sitzung mit einem steuernden Terminal so vorstellen, dass sie einem "Login" auf diesem Terminal entspricht. (Daemons trennen sich normalerweise von jedem steuernden Terminal, indem sie eine neue Sitzung ohne eine erstellen.)
Wenn Sie beispielsweise some_app
von der Shell aus ausführen , erstellt die Shell eine neue Prozessgruppe und macht diese zur Vordergrundprozessgruppe der Sitzung. ( some_app
Möglicherweise werden einige untergeordnete Prozesse erstellt. Standardmäßig sind sie Teil derselben Prozessgruppe.) Wenn Sie dann drücken ^Z
, wird some_app
der Prozessgruppe signalisiert, sie zu stoppen. und die Prozessgruppe der Shell wird wieder auf die Vordergrundprozessgruppe umgeschaltet. Dann bg %1
würde zB die some_app
Prozessgruppe erneut starten , aber im Hintergrund laufen lassen.
Der POSIX.1-2008-Standard ist ziemlich gut lesbar (zumindest glaube ich das!) - werfen Sie einen Blick auf die Definitionen und die relevanten Abschnitte des Kapitels "Allgemeine Terminalschnittstelle" .
terminal
undterminal device
werden im Dokument gleich erwähnt?Job Control Shells bearbeiten ständig Sitzungen oder Prozessgruppen. Sie können mit einem einzigen Aufruf der POSIX-
kill()
Funktion das gleiche Signal an alle Prozesse in einer Prozessgruppe senden .Der POSIX-Standard sagt:
Wenn beispielsweise eine Anmeldeshell beendet wird, wird ein SIGHUP-Signal an alle Programme in ihrer Prozessgruppe gesendet.
Wenn Sie Programme in den Vordergrund oder Hintergrund bearbeiten, verwenden Sie Prozessgruppen.
Es gibt auch Kontrollterminals, über die Sie sich Sorgen machen müssen. Von einem steuernden Terminal erzeugte Signale können an alle Programme in einer Prozessgruppe gesendet werden.
quelle