Vai alla Home Page About me Courseware Federica Living Library Federica Federica Podstudio Virtual Campus 3D Le Miniguide all'orientamento Gli eBook di Federica La Corte in Rete
 
I corsi di Scienze Matematiche Fisiche e Naturali
 
Il Corso Le lezioni del Corso La Cattedra
 
Materiali di approfondimento Risorse Web Il Podcast di questa lezione

Clemente Galdi » 15.Esercitazioni su gestione file e directory


Esercizio 1

Scrivere un programma in C che prende in input (su riga di comando) il nome di un file e visualizza:

"Il file <nomefile> uid=<uid dell'owner del file> gid=<gid del file>"

  • Se la uid dell’owner del file coincide con la uid del processo controlla il bit x per le protezioni per l’owner e visualizza il messaggio:
    • “Il bit x settato per l’owner”
  • Se il gid dell’owner del file coincide con il gid del processo controlla il bit x per le protezioni per il gruppo e visualizza:
    • “Il bit x è/non è settato per il gruppo”
  • Altrimenti controlla il bit x per le protezioni per gli altri e stampa:
  • “Il bit x è/non è settato per gli altri”

Esercizio 2

Scrivere un programma C che:

  • Prende in input da linea di comando il nome di una directory ed il nome di un file.
  • Se non è possibile aprire la directory, visualizza un messaggio d’errore e termina.
  • Se il file non esiste all’interno della directory, visualizza il messaggio: “File non esistente”
  • Se il file esiste nella directory visualizz su STANDARD OUTPUT:
    • “File:” seguito dal nome del file, uid e gid del file

Esercizio 3

Scrivere un programma C che prende in input da linea di comando il nome di una directory.
Se non è possibile aprire la directory, visualizza un messaggio d’errore e termina.
Per ogni file contenuto nella directory visualizza su STANDARD OUTPUT:

  • Per i file regolari: La stringa “File:” seguita dal nome del file e dalla sua dimensione;
  • Per le sottodirectory: La stringa “Directory:” seguita dal nome della sottodirectory.

Esercizio 4

Scrivere un programma in C che, dato in input il nome di una directory ed un intero x ed una stringa y, visualizza:

  • L’elenco di tutti I file, contenuti nella directory indicata od in una sua sottodirectory, la cui dimensione sia maggiore di x.
  • L’elenco di tutte le directory che contengono un file di nome y.

Esercizio 5

Scrivere un programma in C che visualizza per ognuno dei 7 tipi di file definiti da Unix:

  • il numero totale di file del tipo dato contenuti all’interno dell’albero radicato nella directory corrente.
  • il numero di file del tipo dato, contenuti all’interno dell’albero radicato nella directory corrente, ai quali il processo ha accesso in lettura.
  • il numero di file del tipo dato, contenuti all’interno dell’albero radicato nella directory corrente, ai quali il processo ha accesso in scrittura.
  • il numero di file del tipo dato, contenuti all’interno dell’albero radicato nella directory corrente, ai quali il processo ha accesso in esecuzione.

Esercizio 6

Si assume l’esistenza di un file di testo in cui ogni riga sia composta al più caratteri 15 caratteri nell’insieme {a-z, A-Z, .}
Scrivere un programma in C che legge il file una riga per volta ed esegue le seguenti operazioni:

  • Se la stringa x letta dal file contiene il carattere “.”, crea nella directory corrente un file vuoto con nome x;
  • Se la stringa x letta dal file (a) non contiene il carattere “.” e (b) termina per “-”, crea nella directory corrente una sottodirectory di nome x.
  • Se la stringa x letta dal file (a) non contiene il carattere “.” e (b) NON termina per “-”, crea nella directory corrente una sottodirectory di nome x che diventa la nuova directory corrente (si veda la funzione chdir).

Esercizio 7

Si considerino le seguenti strutture:

struct albero{
char nome[5];
struct albero *sx;
struct albero *dx;
}
struct lista{
char nome[100];
struct lista*next;
}

Scrivere una funzione in linguaggio C con la seguente firma:

void crea_directory(struct nodo *);

La funzione prende in input il puntatore ad un albero binario e ricrea su disco un filesystem con la stessa struttura. La funzione costruisce, inoltre, una lista contenente l’elenco dei percorsi creati.

  • Contenuti protetti da Creative Commons
  • Feed RSS
  • Condividi su FriendFeed
  • Condividi su Facebook
  • Segnala su Twitter
  • Condividi su LinkedIn
Progetto "Campus Virtuale" dell'Università degli Studi di Napoli Federico II, realizzato con il cofinanziamento dell'Unione europea. Asse V - Società dell'informazione - Obiettivo Operativo 5.1 e-Government ed e-Inclusion