Witajcie,
Mam problem ze zrozumieniem działania funkcji wait() w C. Otóż sprawa wygląda tak, że kilka razy wywołuję funkcję fork(), żeby sklonować procesy. No i problem polega na tym, że nie chcę dopuścić do powstania procesów zombie, więc muszę użyć funkcji wait(), żeby czekała na wykonanie procesu potomnego. I teraz pojawia się pytanie... Jeśli funkcję fork() wywołam w pętli, to tworzy się kilka procesów, więc skąd funkcja wait() "wie" kiedy inne procesy potomne się skończyły wykonywać? Czy działa to na takiej zasadzie, że jeśli w każdym procesie macierzystym wywołam funkcję wait() to ta będzie czekała tylko na swojego potomka i nie muszę zaznaczać, o którego potomka chodzi? Spróbuję przedstawić to w kodzie:
int i = 0;
for(i; i<10; i++)
{
pid_t pid = fork();
if(pid == -1)
//obsługa błędów
if(pid == 0)
{
//tutaj mamy jakąś instrukcję dla procesu potomnego
}
else
{
int status;
wait(&status); //i tu pojawia się pytanie, czy w takim razie ten wait() jest wystarczający?
}
}
I mam drugie pytanie, co właściwie oznacza
int *status
w funkcji wait()? Dokumentacja Linuxa mówi, że jest to "status", ale nie jest to dla mnie zbyt dokładnie wytłumaczenie. Trzeba to jakoś obsłużyć, albo coś?