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
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? ;)