Skip to main content

Warten Sie - Linux-Befehl - Unix-Befehl

Solus 4 Budgie - Lange musste man darauf warten! - SOLUS 4 DEUTSCH (Juni 2026)

Solus 4 Budgie - Lange musste man darauf warten! - SOLUS 4 DEUTSCH (Juni 2026)
Anonim

Name

wait, waitpid - Warten Sie auf die Beendigung des Prozesses

Zusammenfassung

#umfassen #umfassen

pid_t warten (int * Status );pid_t waitpid (pid_t pid , int * Status int Optionen );

Beschreibung

Daswarten Die Funktion setzt die Ausführung des aktuellen Prozesses aus, bis ein Kind beendet wurde oder bis ein Signal abgegeben wird, dessen Aktion darin besteht, den aktuellen Prozess zu beenden oder eine Signalbehandlungsfunktion aufzurufen. Wenn ein Kind zum Zeitpunkt des Anrufs bereits beendet ist (ein sogenannter "Zombie-Prozess"), kehrt die Funktion sofort zurück. Alle vom Kind verwendeten Systemressourcen werden freigegeben.

Daswaitpid Die Funktion setzt die Ausführung des aktuellen Prozesses so lange aus, bis ein untergeordnetes Element von der pid Das Argument wurde beendet, oder bis ein Signal ausgegeben wird, dessen Aktion darin besteht, den aktuellen Prozess zu beenden oder eine Signalbehandlungsfunktion aufzurufen. Wenn ein Kind auf Wunsch von pid bereits zum Zeitpunkt des Aufrufs beendet ist (ein sogenannter "Zombie" -Prozess), kehrt die Funktion sofort zurück. Alle vom Kind verwendeten Systemressourcen werden freigegeben.

Der Wert von pid kann eine der folgenden sein:

< -1

Dies bedeutet, auf einen untergeordneten Prozess zu warten, dessen Prozessgruppen-ID dem absoluten Wert von entspricht pid .

-1

was bedeutet, auf einen Kindprozess zu warten; das ist das gleiche Verhalten waswarten Exponate.

0

Dies bedeutet, auf einen untergeordneten Prozess zu warten, dessen Prozessgruppen-ID der des aufrufenden Prozesses entspricht.

> 0

Das heißt, auf das Kind warten, dessen Prozess-ID dem Wert von entspricht pid .

Der Wert von Optionen ist ein ODER von null oder mehr der folgenden Konstanten:

WNOHANG

was bedeutet, sofort zurückzukehren, wenn kein Kind verlassen hat.

WUNTRACED

was bedeutet, auch für Kinder zurückzukehren, die gestoppt wurden und deren Status nicht gemeldet wurde.

(Nur für Linux-Optionen siehe unten.)

Ob Status ist nichtNULL, warten oderwaitpid Speichern Sie Statusinformationen an dem Ort, auf den von verwiesen wird Status .

Dieser Status kann mit den folgenden Makros ausgewertet werden (diese Makros nehmen den Stat-Puffer (einint) als Argument - kein Zeiger auf den Puffer!):

WIFEXITED ( Status )

ist nicht Null, wenn das Kind normal beendet wurde.

WEXITSTATUS ( Status )

wertet die niedrigstwertigen acht Bits des Rückkehrcodes des untergeordneten Kindes aus, die möglicherweise als Argument für einen Aufruf an festgelegt wurdenAusfahrt() oder als Argument für a Rückkehr Anweisung im Hauptprogramm. Dieses Makro kann nur ausgewertet werden, wennWIFEXITEDzurückgegeben ungleich Null.

WIFSIGNALED ( Status )

Gibt "true" zurück, wenn der untergeordnete Prozess aufgrund eines nicht abgefangenen Signals beendet wurde.

WTERMSIG ( Status )

gibt die Nummer des Signals zurück, das den Abbruch des untergeordneten Prozesses verursacht hat. Dieses Makro kann nur ausgewertet werden, wennWIFSIGNALED zurückgegeben ungleich Null.

WIFSTOPPED ( Status )

gibt true zurück, wenn der untergeordnete Prozess, der die Rückkehr verursacht hat, momentan gestoppt ist; Dies ist nur möglich, wenn der Anruf mit durchgeführt wurdeWUNTRACED.

WSTOPSIG ( Status )

gibt die Nummer des Signals zurück, durch das das Kind angehalten wurde. Dieses Makro kann nur ausgewertet werden, wennWIFSTOPPED zurückgegeben ungleich Null.

Einige Unix-Versionen (z. B. Linux, Solaris, aber nicht AIX, SunOS) definieren auch ein MakroWCOREDUMP ( Status ) um zu testen, ob der untergeordnete Prozess den Kernspeicher entleerte. Verwenden Sie nur dieses in #ifdef WCOREDUMP … #endif eingeschlossene.

Rückgabewert

Die Prozess-ID des untergeordneten Kindes oder Null wennWNOHANG verwendet wurde und kein Kind verfügbar war, oder -1 bei Fehler (in welchem ​​Fall) errno wird auf einen geeigneten Wert gesetzt).

Fehler

ECHILD

wenn der Prozess in angegeben ist pid ist nicht vorhanden oder ist kein untergeordnetes Element des aufrufenden Prozesses. (Dies kann für das eigene Kind der Fall sein, wenn die Aktion für SIGCHLD auf SIG_IGN gesetzt ist. Siehe auch die LINUX NOTES-Abschnitte zu Threads.)

EINVAL

wenn die Optionen Argument war ungültig.

EINTR

obWNOHANG wurde nicht gesetzt und ein nicht blockiertes Signal oder einSIGCHLD wurde gefangen.