Witam,
jak zrobić aby proces pierwotny czekał na proces potomny i aby otrzymał status z jakim zakończył się potomek?
0
0
Dodam że proces potomny wywołuje funkcją fork()
0
Nie sprawdzałem, czy się nie mylę, ale waitpid(pid, NULL, 0);
powinno zadziałać. :)
0
funkcja zwraca mi pida procesu a ja potrzebuje wynik jego zakończenia
0
Gdy podasz argument status
do waitpid(), a potem przepuścisz go przez WIFEXITED()
i WEXITSTATUS()
to powinieneś otrzymać kod wyjścia.
https://linux.die.net/man/2/waitpid
0
czyli muszę zrobić tak?
int status;
waitpid(-1, &status, 0);
i jak dalej wywołać te funkcje?
0
Jak wcześniej mówiłem nie sprawdzam tego, bo nie mam pod ręką Linuxa, ale zrobił bym to mniej więcej tak: :)
int status = 0;
int returnCode = 0;
pid_t pid = fork();
waitpid(pid, &status, 0);
if(WIFEXITED(status)) {
returnCode = WEXITSTATUS(status);
printf("Proces returned %i", &returnCode);
}
else {
puts("Proces terminated, but not exited normally.");
}
0
Ok dzięki za pomoc :)
zrobiłem to po prostu
int status;
wait(&status);
cout<<status;
wydaje mi się że zwraca dobry wynik (spodziewaną przeze mnie wartość) niech wypowie się ktoś czy to jest faktycznie to czego oczekuję czy może przypadek :)