Działanie funkcji wait przy użyciu fork

0

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ś?

1 użytkowników online, w tym zalogowanych: 0, gości: 1