PRCTL in C -Beispielanwendung

PRCTL in C -Beispielanwendung
Der PRCTL -Systemaufruf wurde in der C -Sprache verwendet, um verschiedene Merkmale der Aufruffunktion oder der Prozessaktivitäten zu manipulieren. Der erste Parameter des "PRCTL" -Systemaufrufs definiert, was mit den initialisierten Werten im Header zu tun hat. Alle anderen Argumente oder Parameter würden gemäß dem ersten Argument und seinem Wert verwendet. Werfen wir einen tiefen Blick auf den Aufruf „PRCTL“ -System in C, während wir am Ubuntu 20 gearbeitet haben.04 Zum Zeitpunkt der Implementierung dieses Artikels.

Beispiel 01:

Öffnen und melden Sie sich von Ubuntu 20 an.04 und starten Sie die Anwendung mit dem Namen „Terminal“ aus dem Aktivitätsbereich. Dies kann durch die Verwendung einer einfachen Schlüsselkombination „Strg+Alt+T“ auf Ihrem Desktop erfolgen. Erstellen.

$ touch prtcl.C

Lassen Sie uns nach der Erstellung die Datei mit einem GNU -Nano -Editor gemäß der angezeigten Anweisung öffnen.

$ nano prtcl.C

Fügen Sie den Code hinzu, der im Snap -Bild darunter in der GNU -Datei gezeigt wird. Der Code enthält die erforderlichen Header -Dateien für die Arbeit eines PRCTL () -Codes. Dann haben wir 4 Threads mit dem Namen Process1, Process2, Process3 und Process4 erstellt und definiert. Alle 4 Prozesse oder Funktionen enthalten die Hohlraum als allgemeiner oder Signaturparameter, aber es könnte etwas anderes sein. Wie wir zuvor ausgearbeitet haben. Wir haben also PRCTL () in allen 4 Methoden aufgerufen. Nach dem 2 -Sekunden -Schlaf wird die Puts -Funktion ausgeführt, um den Namen eines Prozesses festzulegen.

Dann haben wir einen Array -Zeiger mit dem Namen „FP“ deklariert und seine Elemente enthalten die Namen von 4 Methoden oder Prozessen. Die Hauptmethode deklarierte hier eine Variable „ID“ an. Die "für" -Schloop wurde hier verwendet, um einen untergeordneten Prozess für jeden übergeordneten Prozess mit der Methode "fork ()" zu erstellen und diese auf die variable "int" zu speichern. Die Anweisung "if" wurde verwendet, um zu überprüfen, ob die ID 0 ist. Wenn die Bedingung erfüllt, wird die untergeordnete Prozessnummer gedruckt, und das „FP“ -Array wird als Methode zum Abrufen des ersten Elements, des Prozesses 1 usw. verwendet, bis die Schleife endet. Die Aufruf von Methoden auf diese Weise würde dazu führen, dass alle oben definierten Methoden ausgeführt werden.

Kompilieren Sie zuerst die Datei.

$ GCC PRCTL.C

Die Ausführung der Datei zeigt die folgende Ausgabe an. Der Name wurde für jeden Prozess festgelegt.

$ ./A.aus

Beispiel 02:

Lassen Sie uns eine weitere Illustration von PRCTL haben. Lassen Sie uns die PRCTL öffnen.c Datei.

$ nano prctl.C

Nachdem die Header einbezogen wurden, wurde die Methode "Cap_1" initialisiert. Der Dateideskriptor "F" wurde definiert und eine Variable "res" wurde mit einem Wert "-1" initialisiert. Jetzt wird der Dateideskriptor verwendet, um die maximale Fähigkeit vom Kernel zu erhalten. Der Dateideskriptor öffnet die Datei als schreibgeschützt aus dem Kernel-Ordner. Wenn der Dateideskriptor mehr als 0 Zeichen erhält, wird das „BUF“ -Array mit Größe 32 definiert. Es wurden zwei Ganzzahlen definiert, und die Lesemethode wurde verwendet, um die Daten mithilfe von Dateideskriptor aus dem Puffer abzurufen und in der Variablen „Num“ gespeichert zu werden. Wenn der variable "Num" -Wert größer als 0 ist, wird der indexübereinstimmte Wert der Variablen "Num" als NULL initialisiert. Die "SSCANF" -Methode binden den Zeiger "res" mit dem "BUF" -Array und speichern ihn innerhalb der Variablen "R". So könnte die maximale Fähigkeit vom Kernel erhalten werden. Wenn der Wert für die variable "R" nicht gleich 1 ist, aktualisiert er den Wert von "res" erneut mit "-1". Am Ende wurde die Beschreibung geschlossen.

Die zweite Methode, "CAP_2", wurde verwendet, um die Fähigkeitsvariable zu initialisieren, gleich 0. Die PRCTL () -Methode verwendet "pr_capbset_read", um die maximale Fähigkeit zu lesen. Wenn der Wert der Fähigkeit größer als 0 ist, wird er inkrementiert. Wenn die Fähigkeit auf 0 erreicht wird, wird das Inkrementieren gestoppt und den „CP“ -Wert mit einer Abnahme von 1 zurückgegeben.

Die Hauptmethode besteht darin.

Die Zusammenstellung und das Ausführen dieser Datei zeigen, dass der maximale Kapazitätswert 40 beträgt.

$ GCC PRCTL.C
$ ./A.aus

Abschluss:

In diesem Leitfaden haben wir zwei Beispiele erörtert, um den PRCTL () -Systemaufruf in C zu erläutern. Es wird Ihnen sehr helfen, da wir es mit zwei verschiedenen Argumenten demonstriert haben.