INTRODUZIONE ALLA PROGRAMMAZIONE IN C



errno



Si tratta di una speciale variabile di sistema che viene settata nel caso in cui una chiamata di sistema non possa eseguire l'insieme dei propri compiti. Per utilizzare "errno" in un programma C, deve essere dichiarato con l'istruzione: extern int errno; Puo' essere manualmente azzerato all'interno di un programma C, altrimenti questo ritorna semplicemente il proprio ultimo valore. int chmod(char *path, int mode) cambia il modo di accesso di un file, specificato da "path", al "mode" stabilito. chmod() ritorna 0 in caso di successo, -1 nel caso contrario e setta "errno" ad indicare l'errore riscontrato. Gli errori sono definiti in "#include <sys/stat.h>". Il modo di accesso di un file puo' essere settato utilizzando macro predefinite in sys/stat.h (vedere le pagine "man"), oppure settando la modalita' in un numero ottale di 3 cifre. La cifra piu' a sinistra specifica i privilegi del proprietario, quella centrale i privilegi del gruppo e quella piu' a destra i privilegi degli altri utenti. Per ogni cifra ottale intendiamo un numero binario di 3 bit. Il bit piu' a sinistra corrisponde all'accesso per la lettura (on/off), quello centrale alla scrittura, quello a destra all'esecuzione. Cosi': 4 (ottale 100) = sola lettura 2 (010) = scrittura 6 (110) = lettura e scrittura 1 (001) = esecuzione Con modalita' di accesso 600 daremo i permessi di lettura e scrittura al proprietario, mentre gli altri non avranno nessun permesso. 666 da' a tutti l'accesso in lettura/scrittura. Ricordiamo che esiste anche un comando UNIX "chmod". int stat(char *path, struct stat *buf), int fstat(int fd, struct stat *buf) Con "stat()" si ottengono informazioni in merito al file nominato con "path". Il permesso di lettura, scrittura o esecuzione del file specificato non e' richiesto, ma tutte le directories elencate nel path-name per arrivare al file devono avere il permesso di ricerca. Con "fstat()" si ottengono le stesse informazioni riguardo ad un file aperto indicato con la descrizione dell'argomento della funzione, allo stesso modo di come potrebbero essere ottenute con una chiamata "open" (I/O di basso livello). "buf" e' un puntatore ad una struttura "stat" in cui vengono memorizzate le informazioni relative al file. Una struttura stat e' definita in "#include <sys/types.h>" (vedere le pagine "man" per ulteriori informazioni). "stat()" e "fstat()" ritornano 0 in caso di successo, -1 in caso di insuccesso e settano "errno" per indicare l'errore verificatosi. Anche gli errori sono definiti in "#include <sys/stat.h>". int unlink(char *path) elimina il link esistente relativo alla directory indicata con "path". "unlink()" ritorna 0 in caso di successo, -1 in caso di insuccesso e setta "errno" per indicare l'errore. Gli errori sono elencati in "#include <sys/stat.h>".