Laboratorio di Sistemi Operativi - AA 2010/11 Esercitazione del 4 aprile 2011 *** Esercizio 1 *** Scaricare il file list.tgz. Estrarre i file contenuti nell'archivio (per esempio: tar xvzf list.tgz). Il codice che implementa la struttura dati lista contiene (almeno) due errori: individuarli e correggerli. *** Esercizio 2 *** Scrivere un programma C che: - accede alle directory corrente; - elabora tutti i file contenuti nella directory corrente eccetto "." e ".." (che vengono ignorati); - per ogni file il programma deve stampare (almeno) le seguenti informazioni: - nome; - dimensione in byte e numero di blocchi occupati su disco; - tipo di file: regolare, directory o altro; - nome e uid del proprietario del file oppure solo uid se non e` possibile accedere al nome del proprietario; - nome del gruppo e gid del proprietario del file oppure solo gid se non e` possibile accedere al nome del gruppo; - altri utenti del sistema che appartengono allo stesso gruppo del proprietario del file; - Permessi di lettura/scrittura/esecuzione(o ricerca) - cioe` R W X - per il proprietario, il gruppo e il 'resto' (others). I permessi devono essere stampati nello stesso formato usato da altri programmi unix, come, ad esempio, ls (per es: ls -l). CHIAMATE DI SISTEMA DA USARE: - getcwd, opendir, readdir, closedir (dirent.h) - stat (NOTA: documentazione nella sezione 2 del 'man') (sys/stat.h) - getpwuid, (sys/types, pwd.h) - getgrgid (grp.h) - perror (errno.h) *** Esercizio 3 *** Modificare l'esercizio 2 in modo che stampi le informazioni relative ai file contenuti nell'albero di directory con radice nella directory corrente. Il programma NON DEVE ESSERE RICORSIVO. [Hint: usare le liste del primo esercizio, dopo aver corretto gli errori.] *** Esercizio 4 *** Generare un processo con una fork(): stampare sia nel processo padre che nel processo figlio il PID (Process ID) e il PPID (Parent PID). - 4A: Generare un processo ORFANO. - 4B: Generare un processo ZOMBIE.