Napisz program, którego zadaniem będzie:
- utworzenie pliku na dysku i zmapowanie obszaru pamięci do tego
pliku (funkcja mmap), w taki sposób, aby zapisy do
pamięci były widoczne w pliku,
- uruchomienie podprocesu, który następnie uruchomi program (jedną
z funkcji exec*) wyświetlający obrazek z podanego pliku
z opcją aktualizacji (np. display -update 1),
- proces nadrzędny będzie wykonywał w pętli następujące operacje:
- odpyta użytkownika o nazwy kolejnych plików z obrazkami (JPEG
lub PNG),
- obliczy długość pliku i zmieni odpowiednio wielkość obszaru
pamięci wspólnej i zmapowanego pliku (funkcje stat,
mmap, ftruncate),
- wczyta plik do zmapowanego obszaru pamięci,
- ewentualnie wymusi aktualizację wyświetlanego obrazu przez
podproces (funkcja memcntl/MC_SYNC???).
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.
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.