Powrót na stronę UNIX

UWAGA Państwa grupa pisze tylko klienta z poniższego zadania, binarny (stripped) kod serwera jest dostępny w katalogu /home2/samba/borkowskim/unix/ .

Program składa się z 2 niezależnych programów komunikujące się przez FIFO. Serwer odbiera zlecenia poprzez FIFO serwera. Zlecenia są generowane przez programy klientów. Częścią informacji przesyłanej w zleceniu jest nazwa FIFO klienta, do którego serwer wpisze wynik swojej pracy. Każdy program klient ma swój unikalny plik FIFO. Obowiązuje format danych w którym:

Program serwer jest bezparametrowy. Klient jako parametr przyjmuje ścieżkę do fifo serwera (wraz z nazwa pliku server.fifo).

Przetwarzanie po stronie serwera polega na podwajaniu wszystkich spacji w przekazanych danych. Klient czyta dane z stdin dzieli je na bloki o odpowiednim rozmiarze, które wysyła do serwera. Odebrane wyniki są wyświetlane na stdout.

Zarówno klient jak i serwer jest odpowiedzialny za utworzenie swoich plików FIFO. FIFO należy tworzyć w katalogu roboczym (CWD). FIFO serwera ma mieć nazwę 'server.fifo', a klienta 'PID.fifo' gdzie PID zamieniamy na pid klienta. Po zakończeniu pracy każdy program musi usunąć swoje FIFO także jeśli zakończy się sygnałem SIGINT lub na skutek zerwania połączenia.

Serwer i klient kończą pracę i sprzątają po sobie fifo w odpowiedzi na C-c, klient również po zakończeniu przetwarzania lub na skutek przedwczesnego zamknięcia serwera. Serwer powinien być odporny na przekazanie mu nieistniejącego pliku zwrotnego lub zerwanie połączenia. W takim przypadku blok danych jest ignorowany. Oba procesy mają rozpoznawać nieoczekiwane zerwanie połączenia FIFO.

Zarówno klient jak i serwer mogą używać tylko niskopoziomowych operacji I/O. Funkcje obsługi sygnałów mogą zawierać tylko jedną instrukcje, dopuszczane są tylko 1-2 zmienne globalne. Obowiązują 2p karne za każą złamaną zasadę.

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