\hline
\hline
\textsl{\code{create}} & Chiamata per creare un nuovo file (vedi
- sez.~\ref{sec:file_open}).\\
+ sez.~\ref{sec:file_open_close}).\\
\textsl{\code{link}} & Crea un \textit{hard link} (vedi
sez.~\ref{sec:link_symlink_rename}).\\
\textsl{\code{unlink}} & Cancella un \textit{hard link} (vedi
\textbf{Funzione} & \textbf{Operazione} \\
\hline
\hline
- \textsl{\code{open}} & Apre il file (vedi sez.~\ref{sec:file_open}).\\
+ \textsl{\code{open}} & Apre il file (vedi
+ sez.~\ref{sec:file_open_close}).\\
\textsl{\code{read}} & Legge dal file (vedi sez.~\ref{sec:file_read}).\\
\textsl{\code{write}} & Scrive sul file (vedi
sez.~\ref{sec:file_write}).\\
\item[\const{MS\_SYNCHRONOUS}] Abilita la scrittura sincrona richiedendo che
ogni modifica al contenuto del filesystem venga immediatamente registrata su
disco. Lo stesso comportamento può essere ottenuto con il flag
- \const{O\_SYNC} di \func{open} (vedi sez.~\ref{sec:file_open}).
+ \const{O\_SYNC} di \func{open} (vedi sez.~\ref{sec:file_open_close}).
Questa opzione consente di ridurre al minimo il rischio di perdita dei dati
in caso di crollo improvviso del sistema, al costo di una pesante perdita di
con i file descriptor (che tratteremo nel prossimo capitolo), in quanto la
risoluzione del collegamento simbolico viene in genere effettuata dalla
funzione che restituisce il file descriptor (normalmente la \func{open}, vedi
-sez.~\ref{sec:file_open}) e tutte le operazioni seguenti fanno riferimento
-solo a quest'ultimo.
+sez.~\ref{sec:file_open_close}) e tutte le operazioni seguenti fanno
+riferimento solo a quest'ultimo.
Dato che, come indicato in tab.~\ref{tab:file_symb_effect}, funzioni come la
\func{open} seguono i collegamenti simbolici, occorrono funzioni apposite per
Ma se la scrittura e l'aggiornamento dei dati delle directory è compito del
kernel, sono molte le situazioni in cui i processi necessitano di poterne
leggere il contenuto. Benché questo possa essere fatto direttamente (vedremo
-in sez.~\ref{sec:file_open} che è possibile aprire una directory come se fosse
-un file, anche se solo in sola lettura) in generale il formato con cui esse
-sono scritte può dipendere dal tipo di filesystem, tanto che, come riportato
-in tab.~\ref{tab:file_file_operations}, il \itindex{Virtual~File~System} VFS
-prevede una apposita funzione per la lettura delle directory.
+in sez.~\ref{sec:file_open_close} che è possibile aprire una directory come se
+fosse un file, anche se solo in sola lettura) in generale il formato con cui
+esse sono scritte può dipendere dal tipo di filesystem, tanto che, come
+riportato in tab.~\ref{tab:file_file_operations}, il
+\itindex{Virtual~File~System} VFS prevede una apposita funzione per la lettura
+delle directory.
\itindbeg{directory~stream}
Come per \func{mktemp} anche in questo caso \param{template} non può essere
una stringa costante. La funzione apre un file in lettura/scrittura con la
funzione \func{open}, usando l'opzione \const{O\_EXCL} (si veda
-sez.~\ref{sec:file_open}), in questo modo al ritorno della funzione si ha la
-certezza di essere stati i creatori del file, i cui permessi (si veda
+sez.~\ref{sec:file_open_close}), in questo modo al ritorno della funzione si
+ha la certezza di essere stati i creatori del file, i cui permessi (si veda
sez.~\ref{sec:file_perm_overview}) sono impostati al valore \code{0600}
(lettura e scrittura solo per il proprietario).\footnote{questo è vero a
partire dalla \acr{glibc} 2.0.7, le versioni precedenti della \acr{glibc} e
di scrittura per la directory.
Avere il permesso di lettura per un file consente di aprirlo con le opzioni
-(si veda quanto riportato in sez.~\ref{sec:file_open}) di sola lettura o di
-lettura/scrittura e leggerne il contenuto. Avere il permesso di scrittura
+(si veda quanto riportato in sez.~\ref{sec:file_open_close}) di sola lettura o
+di lettura/scrittura e leggerne il contenuto. Avere il permesso di scrittura
consente di aprire un file in sola scrittura o lettura/scrittura e modificarne
il contenuto, lo stesso permesso è necessario per poter troncare il file o per
aggiornare il suo tempo di ultima modifica al tempo corrente, ma non per
Le funzioni \func{chmod} e \func{fchmod} ci permettono di modificare i
permessi di un file, resta però il problema di quali sono i permessi assegnati
quando il file viene creato. Le funzioni dell'interfaccia nativa di Unix, come
-vedremo in sez.~\ref{sec:file_open}, permettono di indicare esplicitamente i
-permessi di creazione di un file, ma questo non è possibile per le funzioni
-dell'interfaccia standard ANSI C che non prevede l'esistenza di utenti e
-gruppi, ed inoltre il problema si pone anche per l'interfaccia nativa quando i
-permessi non vengono indicati esplicitamente.
+vedremo in sez.~\ref{sec:file_open_close}, permettono di indicare
+esplicitamente i permessi di creazione di un file, ma questo non è possibile
+per le funzioni dell'interfaccia standard ANSI C che non prevede l'esistenza
+di utenti e gruppi, ed inoltre il problema si pone anche per l'interfaccia
+nativa quando i permessi non vengono indicati esplicitamente.
\itindbeg{umask}
\subsection{La gestione della titolarità dei file}
\label{sec:file_ownership_management}
-Vedremo in sez.~\ref{sec:file_open} con quali funzioni si possono creare nuovi
-file, in tale occasione vedremo che è possibile specificare in sede di
+Vedremo in sez.~\ref{sec:file_open_close} con quali funzioni si possono creare
+nuovi file, in tale occasione vedremo che è possibile specificare in sede di
creazione quali permessi applicare ad un file, però non si può indicare a
quale utente e gruppo esso deve appartenere. Lo stesso problema si presenta
per la creazione di nuove directory (procedimento descritto in
Un secondo aspetto dell'incidenza delle ACL sul comportamento del sistema è
quello relativo alla creazione di nuovi file,\footnote{o oggetti sul
filesystem, il comportamento discusso vale per le funzioni \func{open} e
- \func{creat} (vedi sez.~\ref{sec:file_open}), \func{mkdir} (vedi
+ \func{creat} (vedi sez.~\ref{sec:file_open_close}), \func{mkdir} (vedi
sez.~\ref{sec:file_dir_creat_rem}), \func{mknod} e \func{mkfifo} (vedi
sez.~\ref{sec:file_mknod}).} che come accennato può essere modificato dalla
presenza di una \textit{Default ACL} sulla directory che andrà a contenerli.
\itindex{sticky~bit} \textit{sticky bit} nella cancellazione dei file (vedi
sez.~\ref{sec:file_special_perm}), la possibilità di impostare il flag di
\const{O\_NOATIME} con \func{open} e \func{fcntl} (vedi
-sez.~\ref{sec:file_open} e sez.~\ref{sec:file_fcntl}) senza restrizioni.
+sez.~\ref{sec:file_open_close} e sez.~\ref{sec:file_fcntl}) senza restrizioni.
Una seconda capacità che copre diverse operazioni, in questo caso riguardanti
la rete, è \const{CAP\_NET\_ADMIN}, che consente di impostare le opzioni