Napisz program, który najpierw:
- utworzy potok (funkcją pipe),
- uruchomi podproces, z którym proces nadrzędny będzie komunikował
się przez ten potok (funkcja fork),
- proces nadrzędny odpyta użytkownika o nazwę pliku z obrazkiem
(JPEG lub PNG), a następnie wyśle procesowi potomnemu zawartość
tego pliku przez potok,
- proces potomny wykona przekierowanie strumienia stdin na potok
(funkcje close i dup), a następnie uruchomi
program (jedna z funkcji exec*) wyświetlający obrazek
pobrany z wejścia (deskryptora 0).
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, lecz
jego licencja zezwala na jego użycie tylko do celów prywatnych.
Uruchom program, sprawdź, czy proces potomny zacznie wyświelać obrazek
od razu, czy dopiero po zamknięciu potoku przez proces nadrzędny.
Następnie zmodyfikuj program w taki sposób, by był on w stanie
wyświetlać wiele obrazków, których nazwy proces macierzysty będzie
pobierał od użytkownika w pętli, i których treść będzie następnie
wysyłał procesowi potomnemu.
Ponieważ proces nadrzędny zwykle musi zamknąć piszący koniec potoku
zanim proces wyświetlający wyświetli obrazek, w zmodyfikowanej wersji
programu należy użyć potoków nazwanych (FIFO). Pamiętaj: otwarcie
potoku nazwanego jest możliwe tylko wtedy, gdy dwa procesy próbują
jednocześnie otworzyć koniec czytający i piszący potoku.