Witam, mam pewien problem... szukalem w internecie na ten temat jednak niestety nie udalo mi sie znalezc... czy ktos ma moze jakis przyklad albo moglby mi pomoc z takim przykladem...
Poiedzmy ze chce miec 3 forki. Podproces jednego forka cos tam wyswietla i jak skonczy to wywolywany jest parent proces w ktorym jest przejscie do 2 forka i tak dalej. Bede wdzieczny za pomoc :)
anataunmeo napisał(a)
Witam, mam pewien problem... szukalem w internecie na ten temat jednak niestety nie udalo mi sie znalezc... czy ktos ma moze jakis przyklad albo moglby mi pomoc z takim przykladem...
Poiedzmy ze chce miec 3 forki. Podproces jednego forka cos tam wyswietla i jak skonczy to wywolywany jest parent proces w ktorym jest przejscie do 2 forka i tak dalej. Bede wdzieczny za pomoc :)
Wystarczy, że stworzysz sobie pipe przed forkiem. po forku zamkniesz pisanie w rodzicu - i spróbujesz czytać - tutaj Ci się zablokuje. Teraz jak dziecko zamknie pipa do pisania to rodzic się odblokuje, najprawdopodobniej pipe do pisania sam się zamknie gdy dziecko zginie.
Możesz też użyć też wait+pętli while (jako że jest to czekanie aktywne należy czekać z użyciem sleep).
Za każdym razem sprawdzasz, czy zwrócony PID zakończonego dziecka to nie jest ten utworzony w ostatnim forku.
Możesz też użyć pipa do zwykłego powiadamiania rodzica, żeby przeszedł do następnego forka - naprawdę sposobów jest cała masa.
IPC - sygnały, muteksy, semafory, pamięć dzielona, gniazda itp
a ma ktos moze jakis przyklad ? bo nie wiem do konca jak umiescic pipe przed forkiem....
proponuje zrobić to po prostu tak
- fork w procesie macierzystym, następnie w procesie macierzystym robisz wait()
- proces potomny cośtam sobie robi, zamyka się
- proces macierzysty odbiera waitem() informacje i odpala nowego forka
i tak w kółko.