Wartepid -System in C

Wartepid -System in C

Der WaitPID () Systemanrufmonitore Ein Kind des Anruferprozesses für staatliche Änderungen und ruft Informationen über das Kind ab, dessen Verhalten sich geändert hat. Das Kind wurde durch ein Signal gestoppt oder von einem Signal wieder aufgenommen, das als Zustandsverschiebung angesehen wird. Das Warten auf ein gekündigtes Kind ermöglicht es dem System, die mit dem Kind verbundenen Ressourcen zu befreien. Wenn keine Wartezeit durchgeführt wird, bleibt das beendetes Kind in einem „“Zombie" Zustand.

Der WaitPID () Systemfunktion pausiert den aktuellen Prozess, bis das PID -Argument ein Kind angibt, das sich verändert hat. Der Anrufprozess wird durchgeführt, bis der Prozess eines Kindes abgeschlossen ist oder gekündigt wird. Waitpid () Halt den Anrufprozess, bis das System Informationen über den Status des Kindes erhält. Waitpid () Gibt schnell zurück, wenn das System bereits Statusinformationen zu einem geeigneten Kind enthält, wenn es aufgerufen wird. Wenn der Anruferprozess ein Signal mit der Aktion erhält, entweder einen Signalhandler auszuführen oder den Prozess zu beenden, waitpid () wird beendet. Der WaitPID () Funktion Pause die Ausführung des Anrufer-Thread.

Beispiel 1

Wir werden unser erstes Beispiel im Terminal des Ubuntu 20 näher erläutern.04 Betriebssystem. Erstellen Sie eine Datei mit dem Befehl nano in der Konsole, wie unten aufgeführt. Es liegt ganz bei Ihnen, einen Dateinamen auszuwählen.

$ nano warte.C

Sie können überprüfen, ob die Datei in angezeigt wird Gnu Nano Editor. Setzen Sie einfach den Code in das angehängte Bild ein.

In diesem Beispiel haben wir für die Schleife zum Inkrementieren des Prozesses verwendet. Fork () -Systemanruf wurde verwendet. Der Fork () -Systemanruf wird verwendet, um einen neuen Prozess zu starten, der als Kinderprozess bezeichnet wird und parallel zu dem ausgeführt wird, der das gemacht hat gabel () rufen zum übergeordneten Prozess. Nach Fork () -Systemanruf Erstellt einen neuen Kinderprozess, alle Prozesse führen die nächste Anweisung aus. Es akzeptiert keine Eingabe und gibt einen Ganzzahlwert zurück. Danach wurde die Schlaffunktion verwendet.

Die Sleep () -Funktion setzt den Betrieb des aufrufenden Threads aus, bis der Reichweite der Echtzeit-Sekunden, die durch die Parameter Sekunden bereitgestellt wurden Verfahren. Wir haben "1" als Argument hinzugefügt. Whisexited Überprüft den Status der untergeordneten Kündigung, die durch das Warten zurückgegeben wird und WaitPID () Methoden Um festzustellen, ob der Kinderprozess erfolgreich abgeschlossen wurde.

In der Hauptfunktion dieses Programms die Wait () Systemanruf genannt worden. Sobald Sie diesen Code verstanden haben, speichern Sie die Datei und beenden Sie die Datei und kehren Sie zum Terminal zurück. Schreiben Sie die folgenden Anweisungen zur Ausführung von Code. Wir haben die benutzt GCC -Compiler in Ubuntu 20.04 Betriebssystem.

$ gcc warte.C
$ ./A.aus

Die Ausgabe ist im angehängten Bild zu sehen.

Beispiel 2

Wir werden unser zweites Beispiel im Terminal der Ubuntu 20.04 Betriebssystem. Erstellen Sie eine Datei mit der Nano -Kommando in der Konsole wie unten dargestellt. Es liegt ganz bei Ihnen, einen Dateinamen auszuwählen.

$ nano waitpid.C

Sie können überprüfen, ob die Datei in angezeigt wird Gnu Nano Editor. Setzen Sie einfach den Code in das angehängte Bild ein.

Wieder im obigen Code, wieder, Fork () -Systemanruf wurde verwendet. Der Zweck der Fork () -Systemanruf ist, einen neuen Prozess zu starten, der als Kinderprozess bekannt ist, der parallel zu dem entspricht, der das gemacht hat gabel () rufen zum übergeordneten Prozess. Nach Fork () -Systemanruf Erstellt einen neuen Kinderprozess, alle Prozesse führen die nächste Anweisung aus. Es akzeptiert keine Eingabe und gibt einen Ganzzahlwert zurück. Exit_failure bedeutet die ineffektive Umsetzung eines Programms. Der pause () Funktion wird auf die Signale warten.

Wenn ein Kind angehalten hat, aber nicht mit dem Einsatz verfolgt wurde pTrace () Systemanruf, Wuntraced wird zurückkehren. Obwohl dieser Parameter nicht ausgewählt ist, wird der Status von nachverfolgten Kindern, die angehalten haben. Wcontinued Kehren Sie zurück, wenn ein angehaltenes Kind von Sigcont Sending neu gestartet wurde. Wexitstatus (Status) Bietet den Exit -Status des Kindes. Wenn Whisexited Gibt wahr, dass dieser Ausdruck nur verwendet werden sollte. Die Frequenz des Signals, das den Kinderprozess zum Ende veranlasste WTERMIG (Status). Wenn Wifsignaled gab das „wahr“, dieser Ausdruck sollte nur verwendet werden.

Die Signalnummer, die das Kind zum Stoppen veranlasste WStopsig (Status). Wenn Wifstoped Gibt wahr, dass dieser Ausdruck nur verwendet werden sollte. Wifsignaled (Status) Gibt true zurück, wenn ein Signal den Prozess des Kindes beendet hat. Sobald Sie diesen Code verstanden haben, speichern Sie die Datei und beenden Sie die Datei und kehren Sie zum Terminal zurück. Schreiben Sie die folgenden Anweisungen zur Ausführung von Code. Wir haben den GCC -Compiler in Ubuntu 20 verwendet.04 Betriebssystem.

$ gcc Waitpid.C
$ ./A.aus

Die Ausgabe ist im angehängten Bild zu sehen.

Abschluss

In diesem Leitfaden ging es um die Verwendung der Waitpid () Systemanruf In C -Programmierung. Wir haben zwei Beispiele angegeben. Einer von ihnen ist einfacher und einfach. Sobald Sie das Verständnis erhalten haben, können Sie sich leicht zum komplexen bewegen. Führen Sie beide Beispiele in Ihrem System aus, um es Ihnen leicht zu erleichtern, die Verwendung des Waitpid () Systemanruf In C -Programmierung.