Treść #
Napisz program używający łączy pipe do jednostronnej komunikacji pomiędzy trzema procesami. Każdy proces jest połączony z każdym innym jednym łączem pipe. Procesy tworzą coś w rodzaju trójkąta z jednym wyróżnionym rogiem (proces rodzic), kierunek łącza ma być tak dobrany aby możliwe było przesłanie komunikatów „w koło” pomiędzy procesami.
Początkowo proces rodzic ma wysłać liczbę 1 (jako tekst o zmiennej długości) w obieg, potem procesy pracują już identycznie tzn. odbierają liczbę, wypisują ją na stdout wraz ze swoim PID
, zmieniają ją o losowy czynnik [-10,10]
i przesyłają dalej. Jeśli któryś z procesów odbierze liczbę 0 to ma się zakończyć. Inne procesy poprzez detekcję zerwanego łącza także mają się zakończyć.
Etapy #
- Tworzenie procesów i łączy, właściwe zamykanie nieużywanych deskryptorów. Każdy proces (łącznie z rodzicem) ma wypisać jakie deskryptory (numery) tworzy i jakie zamyka. Proces rodzic czeka na procesy potomne po czym się kończy.
- Każdy z procesów wysyła przez swoje łącze losowa liczbe z przedziału
[0-99]
po czym odbiera to co dostał od innego procesu, wypisuje wraz ze swoimPID
i kończy się. Na tym etapie trzeba rozwiązać kwestie różnych rozmiarów liczb przesyłanych. - Proces rodzic wysyła początkową liczbę 1, która jest przesyłana wkoło (z wypisaniem) bez zmian aż do C-c.
- Dodajemy zamiany liczby, warunek STOP i sprawdzanie zerwania łącza.