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
 
 
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