C setpgid Funktionsverbrauch

C setpgid Funktionsverbrauch
Wann immer wir den Befehl Shell eingeben, wird in der Sitzung ein neuer Prozess gestartet. Das System weist dann eine Prozesskennung (PID) und eine Prozessgruppenkennung (PGID) zu. PID gibt die Prozess -ID an, während PGID die Prozessgruppen -ID einer beliebigen Aufgabe beschreibt, die derzeit vom System oder noch im Prozess ausgeführt wird. Der setpgid () ist eine Funktion, die dafür relevant ist. Wie der Name angibt, wird entweder verwendet, um der vorhandenen Prozessgruppe hinzuzufügen oder in einem anderen Fall eine neue Gruppe von Prozessen innerhalb derselben Sitzung des Aufrufprozesses zu erstellen. Die Gruppen -ID für den Prozess des Leiters der Sitzung ist immer der gleiche. Es wird nicht geändert.

Diese Funktion wird verwendet, um die PGID (Prozessgruppen -ID) in der Sitzung des Aufrufprozesses festzulegen, damit wir den Prozess verschiedenen Prozessgruppen zuweisen oder neu zuweisen können. Um eine neue Prozessgruppe mit einem bestimmten Prozess als Gruppenleiter zu starten, hilft diese Funktion auch in diesem Aspekt. In diesem Artikel wird die Erstellung und Arbeit der Funktion setpgid () hervorgehoben.

Beschreibung

Die Prozess -ID ist eine ID, die innerhalb der Sitzung eines Anrufprozesses vorhanden ist. Es ist die ID, deren PGID wir ändern wollen. Es kann entweder der Anrufer von setpgid () oder die Kinder davon sein. Die PID kann nicht der Sitzungsleiter sein, der geändert werden soll.

PGID hingegen ist die neue ID, die wir diesem von PID angegebenen Prozess zuweisen möchten. Wenn PGID auf die vorhandene Prozessgruppe hinweist, muss sie innerhalb der Sitzung des Anrufers vorhanden sein. Die neue Gruppe wird auch in der Sitzung des Anrufers erstellt.

Syntax

#enthalten
int setpgid (pid_t, pgid);

Die Funktionsetpgid () ist im Feld Bibliothek vorhanden. Und dies ist hier enthalten. Deshalb verwenden wir diese Bibliothek hier. Im Parameterabschnitt der Funktion werden beide IDs (PID, PGID) geschrieben. Beide gehören zur Prozess -ID, die wir festlegen möchten, oder der, die wir beitreten oder erstellen möchten.

Fakten und Funktionen der Funktion setPgid ()

Wie bereits erwähnt, legt setpgid () die Gruppen -ID eines Prozesses fest, der PID für die Prozessgruppe angibt. Manchmal gibt es einige Umstände, unter denen alle Gruppen von Prozessen in derselben Sitzung liegen. Dies tritt auf, wenn ein Prozess durch setpgid () von einer Gruppe zur anderen übernommen wird (). In dieser Situation gibt PGID die vorhandene Prozessgruppe an und schließt sich an.

GetPgid () ist eine Funktion wie setpgid (). Die Syntax für beide Prozesse ist gleich, einschließlich Funktionsaufrufen. Wie diese beiden Funktionen sind GetPgrp () und GetPgid (0) auf die gleiche Weise gleichbedeutend miteinander entsprechen.

Verwendung von Prozessgruppen

Prozessgruppen arbeiten daran, die Signale so zu verteilen, dass sie die Anforderungen für die Eingabe weiterleiten und zuschreiben. Diese Prozesse, die die gleichen Prozessgruppen besitzen.

Rückgabewert

Wenn der Funktionsaufruf erfolgreich durchgeführt wird und der Prozess durchgeführt wird, wird der SetPGID () und setPGRp () Null zurückgegeben, wenn der Fehler auftritt, und die Funktion gibt -1 zurück. Nach diesem Fehlersignal wird übergeben. GetPgid () und getPgrp () sind mit setPGID () zugeordnet. GetPgid () gibt also eine Prozessgruppe zurück, wenn sie erfolgreich durchgeführt werden. Bei Fehler gibt es -1. Während die Funktion getPgrp () immer die derzeit verwendete Prozessgruppe gibt.

Verwenden Sie zum Implementieren einiger Beispiele einen Texteditor und einen Linux -Terminal in diesem Aspekt. Wir schreiben Code in die Textredakteure und anzeigen das Ergebnis im Linux -Terminal an.

Beispiel 1

Erstens verwenden wir dieselbe in der Anleitung beschriebene Bibliothek, die für die Ausführung des Codes unerlässlich ist.

#enthalten

Im Hauptprogramm wird der Rückgabetyp als Ganzzahl angenommen. Es ist nicht nichtig, da die Funktion den Wert in Form einer Ganzzahl als Prozess -IDs zurückgibt. Wir verwenden wenn wir eine Fehlerprüfung anwenden müssen. Die erste Zeile in der Anweisung ruft den setpgid () mit dem Argument einer anderen Funktion getPid () auf. Diese Funktion erhält die ID, die wir festlegen möchten. Wenn der zurückgegebene Wert '-1' ist, bedeutet dies, dass ein Fehler aufgetreten ist, damit der Prozess beendet wird.

If (setpgid (getPid (), 0) == -1)

Dadurch wird dann erneut dieselbe SETPGID -Funktion aufgerufen, um die Standard -ID des Prozesses zurückzusetzen. Wenn die Bedingung jedoch wahr ist, bedeutet der zurückgegebene Wert 0.

Speichern Sie die Datei mit C -Erweiterung und sehen Sie die Ausgabe zum Linux -Terminal. Der Quellcode wird kompiliert und dann über einen GCC -Compiler ausgeführt. Es wird eine Eingabedatei verwendet, die ein Quellcode ist, und eine Datei wird verwendet, um die Ausgabe anzuzeigen. 'Datei. C 'ist der Name einer Datei.

$ Gcc -o Dateidatei.C
$./Datei

Der Code wird erfolgreich ausgeführt, wenn wir den Code ausführen, und die Prozess -ID und die Prozessgruppen -IDs werden erhalten. Beide IDs sind gleich, was bedeutet, dass beide in derselben Sitzung liegen. Jedes Mal, wenn Sie den Code ausführen, sind die resultierenden IDs unterschiedlich.

Beispiel 2

Hier verwenden wir einen Fork () im Quellcode. Als Fork () -Funktion wird zum Erstellen eines neuen Prozesses verwendet, und dieser Kinderprozess wird gleichzeitig mit seinem übergeordneten Prozess ausgeführt. Dies ist eine weitere Methode zum Einstellen der ID und der Gruppen -IDs der neu erstellten Prozesse. Zunächst müssen wir eine Variable initialisieren, um zu überprüfen, ob der Fehler vorliegt oder nicht. Wenn es existiert, wird ein Fehlersignal übergeben. Und im anderen-wenn-Teil wird die Gabelfunktion aufgerufen. Wenn die Prozess -ID gleich der gabel zurückgibt 0, bedeutet dies, dass der neue Prozess erstellt wird.

If ((pid = fork ()) == 0)

Alle Gruppen -IDs eines Kindes werden vor dem Warten und danach angezeigt. In ähnlicher Weise werden die übergeordneten Prozess -IDs angezeigt. Diese werden durch die GetPid () -Funktion erhalten. Am Ende wird die Funktion setPGID () aufgerufen, wenn sie nicht Null ist, ein Fehler wird übergeben.

Jetzt werden wir das Ergebnis sehen. Alle Prozess -IDs und die Prozessgruppen -IDs werden angezeigt. Verwenden von Fork () werden Eltern-Kind-IDs separat angezeigt. Zuerst wird sowohl die Eltern- als auch die Kinderprozess -ID vor dem Warten angezeigt und dann nacheinander nacheinander.

Abschluss

Der Artikel 'C: setPGID -Funktionsnutzung' ist ein Artikel, der die grundlegende Beschreibung der Funktionalität setPGID () sowie der Erstellung und Verwendung der Prozess -Prozess -Prozess -ID und der Erstellung und Verwendung von Gruppenprozess id enthält. Einige Fehler sind die Gründe für das Stoppen des Vorgangs können die Suchfehler sein, die keine vorhandene ID finden, dann wird die Prozess -ID des aktuellen Vorgangs automatisch zugewiesen. Wir hoffen.