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.