Powrót na stronę UNIX

Napisz program, który przetwarza plik workfile w taki sposób, że wpierw zczytywana jest porcja danych o wielkości z przedziału <200; 500> bajtów (losowanej przed każdym zczytaniem), potem zamieniane są w nim wielkości liter (małe na duże i vice-versa), po czym zmodyfikowany bufor jest zapisywany do pliku w tym samym miejscu. Program kończy działanie po przetworzeniu całego pliku.

Należy pamiętać o maksymalnym zrównolegleniu operacji odczytu/zapisu/synchronizacji przy użyciu asynchronicznych operacji I/O. Dozwolone jest jednoczesne korzystanie tylko z trzech buforów (pamięć alokowana dynamicznie, wielkość dostosowana do aktualnie przetwarzanych bloków). Należy pamiętać, że zarówno ostatni blok w pliku jak i cały plik może być krótszy niż 200 bajtów, co musi być obsłużone w specjalny sposób - niedozwolone jest zapisywanie do plików dodatkowych znaków.

Program ma reagować na sygnał SIGINT kończąc działanie i próbując przerwać przy tym wykonywanie wszystkich operacji asynchronicznych. Można założyć, że operacje asynchronicznego odczytu/zapisu w przypadku nienapotkania końca pliku i wystąpienia błędu zawsze przetworzą żądaną ilość danych (brak konieczności doczytywania/dopisywania). Dopuszczalne jest pominięcie wykorzystania operacji asynchronicznych w przypadku wczytywania dwóch pierwszych bloków danych oraz gdy po ich wczytaniu osiągnięty zostanie koniec pliku

Nazwa pliku workfile jest argumentem wywołania programu. Gdy nie zostanie on podany program ma wypisać na ekran komunikat USAGE.

Zadanie będzie sprawdzane przez Jurka Bartuszka. Rozwiązanie proszę wgrać do katalogu /home/samba/bartuszekj/unix/ .



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