Laboratorio Sistemi Operativi 1: 7 Novembre 2007

 

 

Per utilizzare le chiamate di sistema per la gestione dei file (nota: non le librerie standard di I/O)

Occorre usare le seguenti direttive:

#include <sys/types.h>

#include <sys/stat.h>

#include <fcntl.h>

#include <dirent.h>   %per le directory

Le funzioni per la gestione dei file sono: open, create, close, read, write, lseek, etc. (vedi /usr/include/sys/fcntl.h)

Queste funzioni lavorano sui file descriptor (interi) e effettuano I/O di byte non bufferizzato

(utilizzate array di caratteri per lettura e scrittura)

Per le directory: opendir, readdir, etc (vedi /usr/include/sys/direct.h e documentazione)

Queste funzioni lavorano su strutture di tipo direct che contengono ad esempio il campo d_name (nome directory)

 

Esercizio 1

Scrivere un programma C che utilizza le funzioni di sistema per gestire i  file (open, close, lseek, read, and write)

e che implementi un comando myseek con le seguenti caratteristiche:

 

myseek FILE  N  START  scrive sullo standard output gli N byte di FILE che seguono i primi START byte

dove FILE e’ il nome di un file, N e START sono numeri positivi -

 

Effettuare i controlli sul numero e tipo degli argomenti passati al comando.

 

Esercizio 2

Scrivere un programma C che utilizza le funzioni di sistema per gestire i  file (open, close, lseek, read, and write)

e che implementi un comando mycopy equivalente al comando cp di Unix (mycopy F1 F2 fa una copia di F1 con nome F2).

 

Effettuare i controlli sul numero e tipo degli argomenti passati al comando.

 

 

Esercizio 3

Scrivere un programma C che utilizza le funzioni di sistema per gestire le directory  (opendir, readdir, closedir)

e che implementi un comando myls equivalente al comando ls senza argomenti.