Powrót na stronę UNIX

Mirroring

Napisz program, który analizuje rekurencyjnie katalogi i pliki zawarte w katalogu workdir a następnie tworzy jego mirror w katalogu roboczym. Każdy katalog przeglądany jest przez oddzielny proces.

Proces główny tworzy w katalogu roboczym katalog o nazwie ".mirror". Tam będzie tworzony mirror katalogu workdir. Proces, który rozpoczyna analizę pewnego katalogu musi odtworzyć w ".mirror" jego pełną ścieżkę. Analiza katalogu polega na zliczeniu wszystkich zwykłych plików i katalogów (tj. bez fifo, socketów, symlinków) w nim zawartych, których nazwa nie rozpoczyna się kropką przy jednoczesnym rekurencyjnym analizowaniu podkatalogów zgodnie z niniejszym opisem (każdy podkatalog przez kolejny proces potomny). Gdy proces analizowania katalogu się zakończy należy o tym poinformować użytkownika wypisując na ekran informację o nazwie katalogu i liczbie znalezionych w nim plików i katalogów.

Program kończy działanie po przetworzeniu wszystkich katalogów ignorując wysyłane sygnały SIGINT (Ctrl+C). Każdy proces musi czekać na zakończenie pracy swoich dzieci. Wszystkie katalogi mają być tworzone z ustawionymi uprawnieniami do odczytu/zapisu/wykonania przyznanymi tylko właścicielowi.

workdir jest parametrem wywołania programu. Bez niego program ma wypisać USAGE.

PRZYKŁADY DZIAŁANIA

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

Szczególna uwagę zwracamy na:

UWAGA: Proszę uważać na wycieki pamięci w przypadku użycia funkcji strtok

Powrót na stronę UNIX