• Non ci sono risultati.

Prova Pratica di Laboratorio di Sistemi Operativi 29 maggio 2014

N/A
N/A
Protected

Academic year: 2021

Condividi "Prova Pratica di Laboratorio di Sistemi Operativi 29 maggio 2014"

Copied!
1
0
0

Testo completo

(1)

Prova Pratica di Laboratorio di Sistemi Operativi 29 maggio 2014

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.

Esercizio 1: Linguaggio C (obbligatorio): (20 punti) Scrivere un programma con un solo parametro.

Come prima cosa il programma deve creare una directory con il path specificato nel parametro. Se la directory esiste gia' o si verifica un errore nella creazione, il programma deve terminare. Chiameremo questa directory “directory-base”

Il programma usando inotify rimane in attesa e stampa una riga di log per ogni file o directory creato o cancellato nella directory-base. (solo nella directory-base, non nelle sottodirectory).

Quando viene cancellata la directory-base il programma termina.

Esercizio 2: completamento (10 punti)

Si estenda il programma dell'esercizio 1 per operare anche nelle sottodirectory. 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: se necessario, usate strutture dati molto semplici come vettori o liste semplici, non preoccupatevi dell'efficienza.

In realta' per un problema nel design dell'API inotify, alcuni eventi di creazione di directory nidificate troppo vicini nel tempo possono venir perduti.

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

Il comando che dovrete implementare come script shell o programma python e' statlen.

Data una directory statlen fa una statistica sulla lunghezza dei nomi dei file presenti in tutto il sottoalbero con radice nella directory passata come parametro.

es.

$ statlen /tmp 2: 2

3: 10 5: 4

significa che in tmp (e in tutte le sottodir.ectory di /tmp) ci sono 2 file con nome di due caratteri, 10 con nomi di 3 caratteri e cosi' via.

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

All'attivazione scrive nel file il proprio pid e aspetta un segnale sigusr1.Quando riceve il segnale legge Anche in questo esercizio occorre usare solo la signalfd e non la signal o

se esiste miofile.9 deve essere rinominato in miofile.10 se esiste miofile 8 deve essere rinominato in miofile 9 e cosi' via fino a miofile.2, rinominato miofile 3. ora se miofile.1

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

mytar crea il file indicato come secondo parametro e registra in esso tutti i file regolari presenti nella directory (ddd nell'esempio).. Ogni

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,

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

l'ouput significa che se contiamo tutti i caratteri contenuti nella prima riga di tutti i file in mydir otteniamo 234 (mydir/file1 puo' avere 40 caratteri nella prima riga,