• Non ci sono risultati.

Prova Pratica di Laboratorio di Sistemi Operativi 29 luglio 2016

N/A
N/A
Protected

Academic year: 2021

Condividi "Prova Pratica di Laboratorio di Sistemi Operativi 29 luglio 2016"

Copied!
1
0
0

Testo completo

(1)

Prova Pratica di Laboratorio di Sistemi Operativi 29 luglio 2016

Esercizio 0 (“Se copiate, vi cacciamo”)

Rendete la vostra directory home inaccessibile ad altri utenti (sia in lettura che in esecuzione). Rimuovete tutti i file che vi appartengono dalla directory /public.

Non usare system o popen o simili! Non fare exec di “ssh -c”.

Esercizio 1: Linguaggio C (obbligatorio) 20 punti scrivere la funzione:

void printgroupdir(const char *dirp, const char *group);

che deve scandire la directory con pathname dirp e stampare tutti I file (non le directory) che appartengano al gruppo passato come secondo parametro.

Creare I file printgroupdir.c, printgroupdir.h e un file testpgd.c contenente un programma principale che prenda come argv[1] e argv[2] i due parametri della funzione. Produrre un Makefile opportuno.

Esempi per provare il funzionamento possono essere:

testpgd /dev tty testpgd /dev disk

Esercizio 2: Linguaggio C: 10 punti scrivere la funzione:

char **groupdir(const char *dirp, const char *group);

che deve scandire la directory con pathname dirp e cercare tutti I file (non le directory) che appartengano al gruppo passato come secondo parametro.

Il valore di ritorno della funzione e’:

Il vettore dei nomi dei file trovati (allocato dinamicamente) con un elemento finale (char *) 0 per indicare la conclusione dell’array (in modo simile al vettore argv usato in execve).

NULL se si sono verificati errori (ad es. La directory non esiste).

(se non vi sono file del gruppo cercato viene restituito un vettore contenente un solo elemento (char *) 0, non NULL).

Scrivere inoltre una funzione:

void freestringarray(char **v);

che deallochi un vettore generato dalla groupdir;

Creare I file groupdir.c, groupdir.h e un file testgd.c contenente un programma principale che prenda come argv[1]

e argv[2] i due parametri della funzione e ne stampi il risultato. Produrre un Makefile opportuno.

Esempi per provare il funzionamento possono essere:

testgd /dev tty testgd /dev disk

Esercizio 3: Script bash o Python: (10 punti):

Scrivere la funzione groupdir in python.

Esercizio 4: (“Consegnate! E’ ora!”):

Consegnare lo script e il sorgente del programma C, in attachment separati, entro il tempo a disposizione, via e- mail a: renzo chiocciola cs.unibo.it. Il subject del mail deve essere uguale a PROVAPRATICA, i nomi dei file in attachment devono contenere il vostro cognome (per evitare confusioni in fase di correzione).

INOLTRE:

Se volete che il vostro lavoro venga giudicato, lasciate aperta la vostra sessione (incluso il vostro editor) e lasciate il laboratorio. Verrete richiamati uno alla volta per una breve discussione sul vostro elaborato.

Riferimenti

Documenti correlati

Scrivere un programma python (o uno script bash) che dato come parametro il pathname di una directory ponga in output il numero dei file e delle directory contenute nel

Scrivere un programma che preso come parametro a linea comando il path di una directory elenchi solamente I file che hanno un nome che ha come suffisso un numero (es.. I

Se volete che il vostro lavoro venga giudicato, lasciate aperta la vostra sessione (incluso il vostro editor) e lasciate il laboratorio. Verrete richiamati uno alla volta per una

Scrivere un programma che per ogni file .c nella directory corrente chiami il compilatore gcc per generare il file oggetto (.o) a meno che esista gia' nella directory un file

deve creare il file 'file1' recuperando il contenuto dal file generato da myt2 dell'esercizio1 Esercizio 3: Script bash o Python: (10 punti):. Il comando che dovrete implementare

Quindi il programma “dovrebbe” stampare una riga di log per ogni file o directory creata o cancellata in tutto il sottoalbero che ha nella directory-base la radice.. Nota:

Il risultato del programma, stampato su standard output, deve essere un solo numero intero: la somma del numero di caratteri presenti nelle n-me colonne di tutti i file regolari,

se dir1 contiene i file pippo, pluto e paperino e la directory paperopoli e quest'ultima contiene i file paperino, qui quo e qua, all'interno di dir2 divranno essere contenuti