Powrót na stronę UNIX

Tematyka zadania: fifo
Rodzaj sprawdzania: po zajęciach
Czas pisania: 90 minut
Sprawdzający: Marcin Borkowski
Oddanie zadania: do katalogu: /home2/samba/borkowskim/unix/

Napisz parę jedno-procesowych programów w modelu klient - serwer. Serwer czyta dane ze swojego FIFO (server.fifi w CWD), otrzymane wiadomości traktuje jak ścieżki do FIFO klientów. Jeśli otrzyma niepoprawną ścieżkę ignoruje taki komunikat. Poprawne FIFO są otwierane, a ich deskryptory przechowywane. Serwer jednocześnie czyta dane z stdin, wszystkie teksty z klawiatury są rozsyłane do aktualnie zarejestrowanych klientów.

Dane odczytywane z klawiatury są rozsyłane liniami o ile rozmiar linii nie przekracza limitu PIPE_BUF, wtedy wysyłany jest blok o długości równej PIPE_BUF.

Nie ma gwarancji, że do FIFO serwera ktokolwiek się podłączy w celu pisania. Jednak jeśli przynajmniej jeden proces to zrobi - to po odłączeniu się wszystkich procesów piszących serwer ma się zakończyć.

Dodatkowo program serwer kończy się bezzwłocznie na skutek końca wejścia z stdin. W każdym z 2 opisanych przypadków zakończenia, musi usunąć swoją kolejkę FIFO.

Program klient ma się zarejestrować na serwerze przez wysłanie adresu swojego FIFO (PID.fifo w CWD) w formie kanonicznej. Następnie teksty napływające od serwera na fifo klienta wypisuje na stdout.

Program klient kończy sie na skutek EOF na własnym FIFO, ma usunąć swoją kolejkę.

Parametrem programu klienta jest lokalizacja FIFO serwera. Program serwer jest bezparametrowy.

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