cwait

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Process.h - Index


Header File

process.h

Kategorie

Prozesssteuerungsroutinen

Prototyp

int cwait(int *statloc, int pid, int action);

Beschreibung

Wartet auf die Beendigung eines untergeordneten Prozesses.

Die Funktion cwait wartet, bis ein untergeordneter Prozess endet. Der Parameter pid gibt die ID des untergeordneten Prozesses an, auf den gewartet werden soll. Ist statloc ungleich NULL, zeigt dieser Parameter auf die Position, an der cwait den Beendigungsstatus speichert.

Ist pid gleich 0, wartet cwait auf die Beendigung der untergeordneten Prozesse. Andernfalls gibt pid die Prozess-ID des abzuwartenden Prozesses an; dieser Wert muss durch einen früheren Aufruf einer asynchronen spawn-Funktion ermittelt worden sein.

Die von action akzeptierten Werte, WAIT_CHILD und WAIT_GRANDCHILD, werden vom Compiler ignoriert und nur aus Kompatibilitätsgründen unterstützt; cwait wartet nur auf den durch pid referenzierten Prozess. Diese beiden Werte sind in process.h definiert.

Rückgabewert

  • Kehrt cwait nach normaler Beendigung des untergeordneten Prozesses zurück, gibt die Funktion dessen Prozess-ID zurück.
  • Kehrt cwait nach einer nicht normalen Beendigung des untergeordneten Prozesses zurück, gibt die Funktion -1 an den übergeordneten Prozess zurück und setzt errno auf EINTR (der untergeordnete Prozess wurde nicht normal beendet).
  • Kehrt cwait zurück, ohne dass der untergeordnete Prozess abgeschlossen wurde, gibt die Funktion -1 zurück und setzt errno auf einen der folgenden Werte:

ECHILD

Kein untergeordneter Prozess vorhanden, oder Wert von pid ungültig

EINVAL

Ungültiger Wert für action angegeben

Beispiel

#include <process.h>
#include <stdio.h> int spawn_and_wait(wchar_t* program)
{
  /* Anderen Prozess mit NOWAIT-Flag */
  int pid = _wspawnl(P_NOWAIT, program, NULL);
  int exitCode;

  /* Auf Fehler prüfen */
  if (pid == -1) return -1;

  /* Auf Anwendungsende warten */
  cwait(&exitCode, pid, 0);
  return exitCode;
}


Portabilität

POSIX Win32 ANSI C ANSI C++

+