Lorsque j'attends un groupe de processus exécutant spécifique qui est un processus enfant, WIFEXITED renvoie true indiquant que le processus s'est terminé? Est-ce ainsi que ça fonctionne? Il semble qu'il ya quelque chose je ne comprends pas ....Pourquoi WIFEXITED retournerait-il vrai sur le processus en cours?
if (waitpid(-pgid, &pstatus, WUNTRACED|WNOHANG) == -1)
perror("Wait error");
if (WIFEXITED(pstatus)) {
strncpy(buf, "Exited", buf_size);
return 0;
Ah, je l'ai à 0 reinitialize, mais maintenant je sorte de comprendre. mais je ne comprends pas très bien comment savoir si quelque chose est encore en cours ou s'il est sorti (sans bloquer). –
Si l'un de vos enfants a changé de statut (est décédé) waitpid renverra un nombre positif. –
Oh, je comprends maintenant ... J'ai besoin de prendre à la fois la valeur de retour et la valeur d'état pour obtenir l'état du processus. (La valeur de retour n'est pas juste pour l'erreur ou pas). Je vous remercie! –