Jak utworzyć okresloną liczbę procesów

0

Witam
Mam następujący problem: Za pomocą forka chciałbym utworzyć określoną liczbę procesów, gdzie 1 proces macierzysty nadzoruje pracę wszystkich potomnych (wykonujących ten sam fragment kodu i przesyłających wyniki do wspólnego procesu macierzystego). I moje pytanie brzmi - jak to zrobić? Byłbym bardzo wdzięczny za naszkicowanie ogólnego schematu, który pozwoli dokonać takiego podziału.

0

A czemu nowe procesy a nie wątki jeśli wolno spytać? Komunikacja międzywątkowa jest znacznie łatwiejsza niż międzyprocesowa.

0

To nie mój wybór niestety, narzucone z góry :P Czy sensownym rozwiązaniem jest zapisanie do zmiennej PID-u procesu macierzystego, a następnie w pętli wykonywać fork-a wtedy, gdy getpid() jest równy temu PID-owi ?

0

Nie ma takiej potrzeby, bo fork() zwróci ci w procesie potomnym pid równy 0. W efekcie wiesz że jeśli fork() == 0 to znaczy ze jesteś w potomku i przerywasz pętlę tworzącą procesy.

0

Czyli chcąc utworzyć np. 5 nowych procesów powinienem napisać:

for(int i=0; i<5; i++)
{
   if(fork() == 0 )
   {
      break;
   }

   else
   {
      /* KOD DLA PROCESU MACIERZYSTEGO */
   }
}

/*KOD DLA POTOMKA */

??

0

Prawie. Zauważ ze w tym przypadku macierzysty proces też wykona kod dla potomka, a chyba nie o to chodziło? ;)

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