Wenn ich auf eine bestimmte laufende Prozessgruppe warte, die ein untergeordneter Prozess ist, gibt WIFEXITED den Wert "true" zurück und sagt, dass der Prozess beendet wurde? Funktioniert das so? Es scheint, gibt es etwas, was ich nicht bin zu verstehen ....Warum wurde WIFEXITED beim Ausführen des Prozesses als wahr zurückgegeben?
if (waitpid(-pgid, &pstatus, WUNTRACED|WNOHANG) == -1)
perror("Wait error");
if (WIFEXITED(pstatus)) {
strncpy(buf, "Exited", buf_size);
return 0;
Ah, ich habe neu initialisieren auf 0, aber jetzt irgendwie verstehe ich. aber ich verstehe nicht ganz, wie ich sagen kann, ob etwas noch läuft oder ob es ausgeht (ohne zu blockieren). –
Wenn eines Ihrer Kinder den Status geändert hat (gestorben), wird waitpid eine positive Zahl zurückgeben. –
Oh, ich verstehe jetzt ... Ich muss sowohl den Rückgabewert und den Statuswert nehmen, um den Status des Prozesses zu erhalten. (Rückgabewert ist nicht nur für Fehler oder nicht). Vielen Dank! –