In Linux i file sono astrazioni che descrivono ogni risorsa: i file su disco, le directory, i dispositivi in dev, i socket e i FIFO sono tutti file implementati attraverso gli inode.
Un file possiede:
- un utente proprietario che è solitamente chi crea il file o la directory: definisce i permessi di accesso;
- un gruppo proprietario che è il gruppo primario (specificato in passwd) dell’utente proprietario.
N.B.: In Linux i nomi dei file sono case sensitive.
Tipi di file
Lo standard POSIX stabilisce i singoli caratteri che rappresentano i tipi di file Unix nel formato lungo del comando ls:
-se è un file regolare,dse è una directory,lse è un symbolic link,pse è un file speciale di un FIFO device,bse è un file speciale di un block device (dispositivo che memorizza dati),cse è un file speciale di un character device (dispositivo che trasferisce dati),sse è un socket.
Operare sui file in C
- Apertura del file con
open: viene creato un file descriptor. - system call sul file; ad esempio
readowrite. - chiusura del file con
close(anche se quando un processo termina chiude tutti i file aperti legati ad esso, è sempre buona pratica chiuderli esplicitamente).
File descriptor
È il riferimento, mantenuto da un processo, a un file aperto. È rappresentato da un piccolo intero generato sequenzialmente a partire da 0. Ogni processo al lancio ha
0perstdin,1perstdoute2perstderr.
Quando si chiude un file, il suo file descriptor viene liberato e può essere riutilizzato.
N.B.: Più file descriptor possono puntare allo stesso file.

File flags
todo pag. 38-40 SystemProgrammingAllInOne