(15 punktów) Napisz program, który:

  1. wykona mapowanie obszaru pamięci do pliku na dysku (funkcja mmap), w taki sposób, aby zapisy do pamięci były widoczne w pliku,
  2. stworzy podproces, który następnie uruchomi program (jedną z funkcji exec*) wyświetlający obrazek ze zmapowanego pliku z opcją aktualizacji (np. display -update 1),
  3. w procesie nadrzędnym będzie wykonywał w pętli nieskończonej następujące operacje:

Struktura programu i wykorzystywanych przezeń plików przedstawiona jest na poniższym rysunku:

\includegraphics/ witold/opsys/zad_mmap.png

Jako program wyświetlający obrazki można zastosować program display należący do pakietu Image Magick. Przydatnym programem wyświetlającym obrazki jest również xv, aczkolwiek jego licencja zezwala tylko na użycie do celów prywatnych.

Wskazówka: dla ułatwienia dobrze jest przed uruchomieniem programu przekopiować dowolny obrazek do pliku, który będzie mapowany i wyświetlany programem display, aby miał on od razu gotowy obrazek do wyświetlania, zanim program zrealizuje całą strukturę.

Uwaga: wersja programu display na Solarisie (diablo) ma jakiś błąd powodujący, że opcja update nie działa prawidłowo. Jako obejście błędu można użyć dodatkowo opcji delay (np. delay 2), co spowoduje aktualizację obrazka. Wersja programu na Linuksie nie ma tego problemu.