Wait System Call in c

Wait System Call in c

Wenn ein Prozess einen Kinderprozess entwickelt, ist es gelegentlich wichtig, dass der Elternprozess warten, bis das Kind ihn abgeschlossen hat, bevor er fortgesetzt wird. Genau das erfüllt die Wait () -Systemfunktion.

Das Warten führt dazu, dass der Elternteil darauf wartet, dass das Kind seinen Zustand ändert. Die Statusänderung könnte darauf zurückzuführen sein, dass der untergeordnete Prozess beendet, durch ein Signal gestoppt oder von einem Signal wieder aufgenommen wird. Unter bestimmten Umständen sollte der übergeordnete Prozess über die Änderung des Kindes im Zustand oder in den Kündigungszustand informiert werden, wenn ein Kinderprozess beendet oder schaltet. In diesem Fall verwendet der übergeordnete Prozess Funktionen wie Wait (), um sich nach dem Update im Zustand des Kinderprozesses zu erkundigen.

Wait () setzt den Anruferprozess aus, bis das System Informationen über den Status des Endspiels empfängt. Wait () kehrt sofort zurück, wenn das System beim Aufrufen bereits Statusinformationen zu einem fertigen Kinderprozess enthält. Wenn der Anruferprozess das Signal mit Aktion empfängt, um einen Signalhandler auszuführen oder den Prozess zu beenden, wird Wait () auch beendet.

Die WaitPID () -Systemfunktion macht den aktuellen Prozess an, bis das PID -Argument ein Kind mit einem veränderten Zustand angibt. WaitPID () wartet ausschließlich auf beendete Kinder standardmäßig; Dieses Verhalten kann jedoch geändert werden. Der Wait () -Systemanruf akzeptiert nur einen Parameter, der die Informationen und Aktualisierungen des Prozesses enthält. Wenn Sie sich nicht um den Ausstiegsstatus des Kinderprozesses kümmern und sich nur darum kümmern, den Elternteil auf das Kind zu warten, verwenden Sie Null als Wert als Wert. In diesem Leitfaden werden wir ein Beispiel für das Verständnis des Wait () -Systemaufrufs in C -Programmierung erläutern.

Voraussetzungen

  • Jedes Betriebssystem Ihrer Wahl. Wir verwenden Ubuntu 20.04 Linux -Betriebssystem.
  • Root -Benutzerzugriff
  • GCC -Compiler installiert und konfiguriert

Beispiel, um das Wartensystem aufzurufen C in C

Öffnen Sie das Terminal und prüfen Sie, ob der GCC -Compiler installiert ist oder nicht. Wenn es nicht installiert ist, verwenden Sie den angehängten Befehl:

$ Sudo APT Installieren Sie GCC

Auf Ubuntu 20.04 System müssen Sie zuerst eine neue Datei mit der erstellen .c Erweiterung. Um dies zu erreichen, gehen Sie in Ihr Heimverzeichnis und generieren Sie eine neue leere Datei mit dem Titel "Wait1". Sie können den Befehl nano auch auf Ihrem Terminal verwenden, um es zu schaffen.

$ nano wait1.C

Nach dem Erstellen der „Wartezeit1).c ”Die Datei wird in einem GNU -Texteditor in Ihrem Linux -System geöffnet und den folgenden Code einfügen. Danach speichern und verlassen Sie das Programm.

Die C/C ++ - Header -Datei ist der Einstiegspunkt Ihres Codes zu den vielen Konstanten-, Typ- und Funktionserklärung der POSIX -OS -API. Mehrere grundlegende abgeleitete Typen sind in den Header enthalten und sollten nach Möglichkeit verwendet werden. ist eine Header -Datei, die die Informationen umfasst. Die symbolischen Konstanten, die mit WaitPID verwendet werden sollen, sind in der definiert . Wir haben auch den Fork -Systemaufruf im Programm verwendet.

Der Fork () -Systemaufruf wird verwendet, um einen neuen Prozess zu starten, der als Kinderprozess bezeichnet wird und parallel zum Fork () -Anrufprozess der übergeordnete Prozess ist. Beide Prozesse implementieren den nächsten Anweis. Ein untergeordneter Prozess teilt denselben PC „Programmzähler“, CPU -Register und Öffnen von Dateien wie seine Eltern. Es gibt einen Ganzzahlwert ohne Parameter zurück. Der Prozess beginnt mit dem Druck von „vor der Gabel.Wenn Sie den Fork () -Systemanruf verwenden, wird ein untergeordneter Prozess erstellt.

Der Wait () -Systemanruf wird in den übergeordneten Abschnitt des Code eingeführt. Infolgedessen wird der übergeordnete Prozess suspendiert, sobald der Prozessor mit der Ausführung des übergeordneten Aussagens beginnt, da die erste Anweisung wartet (NULL). Infolgedessen wird der Kinderprozess zuerst ausgeführt, und alle Ausgangsleitungen beziehen sich auf den Kinderprozess. Der Null -Wait () -Systemanruf zeigt an, dass wir nichts über den Zustand des Übergangs des Prozesses des Kindes wissen werden. Starten Sie jetzt wieder Ihr Terminal. In Ubuntu 20.04 Verwenden Sie den folgenden GCC -Befehl, dem der Dateiname vorausgeht.

$ gcc Wait1.C

Führen Sie nun den Code mit Hilfe des folgenden Befehls im Terminal aus.

$ ./A.aus

Wie bereits erläutert wird, werden die übergeordneten und untergeordneten ID der Prozesse mit Hilfe eines Wait -System -Aufrufs angezeigt.

Abschluss

Dieser Artikel hat die Verwendung des Wait () -Systemaufrufs in C -Programmierung gezeigt. Wir haben eines der Beispiele implementiert, um die erfolgreiche Implementierung des Wait () -Systemaufrufs zu zeigen. Der gesamte Code wird auch ausführlich für das Verständnis des Benutzers beschrieben. Ich hoffe, Sie werden den Wait () -Systemanruf einfach implementieren und verwenden.