\errcode{EINVAL} siano rilevati immediatamente al momento della chiamata,
potrebbero anche emergere nelle fasi successive delle operazioni. Lettura e
scrittura avvengono alla posizione indicata da \var{aio\_offset}, a meno che
-il file non sia stato aperto in \textit{append mode} (vedi
-sez.~\ref{sec:file_open}), nel qual caso le scritture vengono effettuate
+il file non sia stato aperto in \itindex{append~mode} \textit{append mode}
+(vedi sez.~\ref{sec:file_open}), nel qual caso le scritture vengono effettuate
comunque alla fine de file, nell'ordine delle chiamate a \func{aio\_write}.
Si tenga inoltre presente che deallocare la memoria indirizzata da
\label{sec:file_locking}
\index{file!locking|(}
+
In sez.~\ref{sec:file_sharing} abbiamo preso in esame le modalità in cui un
sistema unix-like gestisce la condivisione dei file da parte di processi
diversi. In quell'occasione si è visto come, con l'eccezione dei file aperti
-in \textit{append mode}, quando più processi scrivono contemporaneamente sullo
-stesso file non è possibile determinare la sequenza in cui essi opereranno.
+in \itindex{append~mode} \textit{append mode}, quando più processi scrivono
+contemporaneamente sullo stesso file non è possibile determinare la sequenza
+in cui essi opereranno.
-Questo causa la possibilità di una \textit{race condition}
-\itindex{race~condition}; in generale le situazioni più comuni sono due:
-l'interazione fra un processo che scrive e altri che leggono, in cui questi
-ultimi possono leggere informazioni scritte solo in maniera parziale o
-incompleta; o quella in cui diversi processi scrivono, mescolando in maniera
-imprevedibile il loro output sul file.
+Questo causa la possibilità di una \itindex{race~condition} \textit{race
+ condition}; in generale le situazioni più comuni sono due: l'interazione fra
+un processo che scrive e altri che leggono, in cui questi ultimi possono
+leggere informazioni scritte solo in maniera parziale o incompleta; o quella
+in cui diversi processi scrivono, mescolando in maniera imprevedibile il loro
+output sul file.
In tutti questi casi il \textit{file locking} è la tecnica che permette di
evitare le \textit{race condition}\itindex{race~condition}, attraverso una
\subsection{Il \textit{mandatory locking}}
\label{sec:file_mand_locking}
+\itindbeg{mandatory~locking|(}
+
Il \textit{mandatory locking} è una opzione introdotta inizialmente in SVr4,
per introdurre un file locking che, come dice il nome, fosse effettivo
indipendentemente dai controlli eseguiti da un processo. Con il
qual caso la funzione fallisce con il solito \errcode{EAGAIN}) che comporta la
possibilità di modificare il file.
\index{file!locking|)}
+\itindend{mandatory~locking|(}