Powrót na stronę UNIX

Program do rozsyłania komunikatów pomiędzy wszystkimi uruchomionymi instancjami programu. Linia tekstu wpisana na konsoli dowolnego klienta ma zostać powielona na konsolach wszystkich innych instancji tego samego programu o ile były one uruchomione z tego samego katalogu roboczego. Nie powielamy tekstu na konsoli procesu wysyłającego. Przed tekstem komunikatu należy wypisać numer PID nadawcy.

Program ma używać kolejki komunikatów do wymiany wiadomości oraz pamięci dzielonej i semaforów do synchronizacji dostępu. Maksymalna długość wiadomości to 80 znaków. Nie wolno wielokrotnie wypisywać tej samej wiadomości w jednym procesie.

Program jest bezparametrowy, kończy działanie w przypadku C-d (EOF). Takie zakończenie jednego z programów pracujących na tej samej kolejce powoduje zakończenie działania wszystkich pozostałych i skasowanie zasobów IPC.

Zadanie można wykonać w oparciu o 1 semafor służący jedynie jako ochrona licznika procesów aktualnie podłączonych do kolejki. Aby zagwarantować odbieranie każdej wiadomości tylko raz przez dany proces należy ją rozsyłać do każdego odbiorcy oddzielnie (poprzez jedną kolejkę) z użyciem różnych numerów mtype. Każdy proces czytający powinien mieć przyznany swój mtype przed podłączeniem się do kolejki.

Zadanie będzie sprawdzane przez Marcina Borkowskiego, należy je wgrać do katalogu /home2/samba/borkowskim/unix/ .

Szczególna uwagę zwracamy na:
Powrót na stronę UNIX