Unterschied zwischen Prozessgruppe und Job?

7

Was ist der Unterschied zwischen einer Prozessgruppe und einem Job? Wenn ich tippe, pr * | lprist es dann sowohl eine Prozessgruppe als auch ein Job? Was genau ist der Unterschied zwischen einer Prozessgruppen-ID und einer Job-ID?

Bearbeiten: Ich weiß, es sieht ähnlich aus wie Was ist der Unterschied zwischen einem Job und einem Prozess? , aber es ist etwas anders. Außerdem habe ich dieses Konzept aus diesem Thread nicht verstanden.

Naruto Uzumaki
quelle

Antworten:

9

Eine Prozessgruppe ist ein Unix-Kernel-Konzept. Es kommt nicht sehr oft vor. Sie können ein Signal an alle Prozesse in einer Gruppe senden, indem Sie den kill Systemaufruf oder das Dienstprogramm mit einem negativen Argument aufrufen .

Wenn ein Prozess erstellt wird (mit fork), bleibt er in derselben Prozessgruppe wie sein übergeordnetes Element. Ein Prozess kann durch Aufrufen von setpgidoder in eine andere Gruppe verschoben werden setpgrp. Dies wird normalerweise von der Shell ausgeführt, wenn sie einen externen Prozess startet, bevor sie ausgeführt wird execve, um das externe Programm zu laden.

Die Hauptanwendung für Prozessgruppen ist , dass , wenn Sie drücken Ctrl+C, Ctrl+Zoder Ctrl+\zu töten oder Programme in einem Terminal auszusetzen , wobei das Endgerät ein Signal an eine ganze Prozessgruppe sendet, die Gruppe Vordergrundprozess . Die Details sind ziemlich komplex und vor allem für Shell- oder Kernel-Implementierer von Interesse. Das Kapitel Allgemeine Terminalschnittstelle des POSIX-Standards ist eine gute Darstellung (Sie benötigen einige Unix-Programmierhintergründe).

Jobs sind ein internes Konzept für die Shell. In den einfachen Fällen entspricht jeder Job in einer Shell einer Prozessgruppe im Kernel.

Gilles 'SO - hör auf böse zu sein'
quelle