Per poter accedere al contenuto di un file occorre creare un canale di
comunicazione con il kernel che renda possibile operare su di esso (si ricordi
quanto visto in sez.~\ref{sec:file_vfs_work}). Questo si fa aprendo il file
-con la funzione \func{open} che provvederà a localizzare \index{inode} l'inode
+con la funzione \func{open} che provvederà a localizzare \itindex{inode} l'inode
del file e inizializzare i puntatori che rendono disponibili le funzioni che
il VFS mette a disposizione (riportate in
tab.~\ref{tab:file_file_operations}). Una volta terminate le operazioni, il
\item lo stato del file (nel campo \var{f\_flags}).
\item il valore della posizione corrente (l'\textit{offset}) nel file (nel
campo \var{f\_pos}).
-\item un puntatore \index{inode} all'inode\footnote{nel kernel 2.4.x si è in
+\item un puntatore \itindex{inode} all'inode\footnote{nel kernel 2.4.x si è in
realtà passati ad un puntatore ad una struttura \struct{dentry} che punta
- a sua volta \index{inode} all'inode passando per la nuova struttura del
+ a sua volta \itindex{inode} all'inode passando per la nuova struttura del
VFS.} del file.
%\item un puntatore alla tabella delle funzioni \footnote{la struttura
% \var{f\_op} descritta in sez.~\ref{sec:file_vfs_work}} che si possono usare
\footnotesize
\begin{tabular}[c]{|l|l|}
\hline
- \textbf{Costante} & \textbf{Significato} \\
+ \textbf{File} & \textbf{Significato} \\
\hline
\hline
\const{STDIN\_FILENO} & \textit{file descriptor} dello \textit{standard
facendo riferimento ad un programma in cui lo \textit{standard input} è
associato ad un file mentre lo \textit{standard output} e lo \textit{standard
error} sono entrambi associati ad un altro file (e quindi utilizzano lo
-stesso \index{inode} inode).
+stesso \itindex{inode} inode).
Nelle vecchie versioni di Unix (ed anche in Linux fino al kernel 2.0.x) il
numero di file aperti era anche soggetto ad un limite massimo dato dalle
\const{O\_NONBLOCK}.\\
\const{O\_ASYNC} & Apre il file per l'I/O in modalità asincrona (vedi
sez.~\ref{sec:file_asyncronous_io}). Quando è
- impostato viene generato il segnale \const{SIGIO}
+ impostato viene generato il segnale \signal{SIGIO}
tutte le volte che sono disponibili dati in input
sul file.\\
\const{O\_SYNC} & Apre il file per l'input/output sincrono: ogni
processo o su una posizione oltre il massimo consentito.
\item[\errcode{EPIPE}] \param{fd} è connesso ad una pipe il cui altro capo è
chiuso in lettura; in questo caso viene anche generato il segnale
- \const{SIGPIPE}, se questo viene gestito (o bloccato o ignorato) la
+ \signal{SIGPIPE}, se questo viene gestito (o bloccato o ignorato) la
funzione ritorna questo errore.
\item[\errcode{EINTR}] si è stati interrotti da un segnale prima di aver
potuto scrivere qualsiasi dato.
processo avrà una sua voce nella \textit{file table} referenziata da un
diverso file descriptor nella sua \struct{file\_struct}. Entrambe le voci
nella \itindex{file~table} \textit{file table} faranno però riferimento allo
-stesso \index{inode} inode su disco.
+stesso \itindex{inode} inode su disco.
Questo significa che ciascun processo avrà la sua posizione corrente sul file,
la sua modalità di accesso e versioni proprie di tutte le proprietà che
\item ciascun processo può scrivere indipendentemente; dopo ciascuna
\func{write} la posizione corrente sarà cambiata solo nel processo. Se la
scrittura eccede la dimensione corrente del file questo verrà esteso
- automaticamente con l'aggiornamento del campo \var{i\_size} \index{inode}
+ automaticamente con l'aggiornamento del campo \var{i\_size} \itindex{inode}
nell'inode.
\item se un file è in modalità \itindex{append~mode} \const{O\_APPEND} tutte
le volte che viene effettuata una scrittura la posizione corrente viene
- prima impostata alla dimensione corrente del file letta \index{inode}
+ prima impostata alla dimensione corrente del file letta \itindex{inode}
dall'inode. Dopo la scrittura il file viene automaticamente esteso.
\item l'effetto di \func{lseek} è solo quello di cambiare il campo
\var{f\_pos} nella struttura \struct{file} della \itindex{file~table}
\textit{file table}, non c'è nessuna operazione sul file su disco. Quando la
si usa per porsi alla fine del file la posizione viene impostata leggendo la
- dimensione corrente \index{inode} dall'inode.
+ dimensione corrente \itindex{inode} dall'inode.
\end{itemize}
\begin{figure}[!htb]
file specificato, ed attendono fino alla conclusione delle operazioni;
\func{fsync} forza anche la sincronizzazione dei meta-dati del file (che
riguardano sia le modifiche alle tabelle di allocazione dei settori, che gli
-altri dati contenuti \index{inode} nell'inode che si leggono con \func{fstat},
+altri dati contenuti \itindex{inode} nell'inode che si leggono con \func{fstat},
come i tempi del file).
Si tenga presente che questo non comporta la sincronizzazione della
esso può essere specificato come maschera binaria di due valori:
\begin{basedescript}{\desclabelwidth{3.0cm}}
\item[\const{AT\_EACCESS}] se impostato \funcd{faccessat} esegue il controllo
- dei permessi usando l'\textsl{user-ID effettivo} invece di quello reale (il
+ dei permessi usando l'\acr{uid} effettivo invece di quello reale (il
comportamento di default, che riprende quello di \func{access}).
\item[\const{AT\_SYMLINK\_NOFOLLOW}] se impostato \funcd{faccessat} non esegue
la dereferenziazione dei link simbolici, effettuando il controllo dei
(vedi sez.~\ref{sec:sess_proc_group}) raggruppamenti di processi usati nel
controllo di sessione; a ciascuno di essi è associato un identificatore
(un numero positivo analogo al \acr{pid}).} che è preposto alla ricezione
- dei segnali \const{SIGIO}\footnote{o qualunque altro segnale alternativo
+ dei segnali \signal{SIGIO}\footnote{o qualunque altro segnale alternativo
impostato con \const{F\_FSETSIG}.} per gli eventi associati al file
descriptor \param{fd}\footnote{il segnale viene usato sia per il
\textit{Signal Drive I/O}, che tratteremo in
sez.~\ref{sec:file_asyncronous_operation}, e dai vari meccanismi di
notifica asincrona, che tratteremo in
- sez.~\ref{sec:file_asyncronous_lease}.} e \const{SIGURG} per la notifica
+ sez.~\ref{sec:file_asyncronous_lease}.} e \signal{SIGURG} per la notifica
dei dati urgenti di un socket.\footnote{vedi
sez.~\ref{sec:TCP_urgent_data}.} Nel caso di un \textit{process group}
viene restituito un valore negativo il cui valore assoluto corrisponde
caso di errore viene restituito $-1$.
\item[\const{F\_SETOWN}] imposta, con il valore dell'argomento \param{arg},
l'identificatore del processo o del \itindex{process~group} \textit{process
- group} che riceverà i segnali \const{SIGIO} e \const{SIGURG} per gli
+ group} che riceverà i segnali \signal{SIGIO} e \signal{SIGURG} per gli
eventi associati al file descriptor \param{fd}, ritorna un valore nullo in
caso di successo o $-1$ in caso di errore. Come per \const{F\_GETOWN}, per
impostare un \itindex{process~group} \textit{process group} si deve usare
\item[\const{F\_GETSIG}] restituisce il valore del segnale inviato quando ci
sono dati disponibili in ingresso su un file descriptor aperto ed impostato
per l'I/O asincrono (si veda sez.~\ref{sec:file_asyncronous_io}). Il valore 0
- indica il valore predefinito (che è \const{SIGIO}), un valore diverso da
+ indica il valore predefinito (che è \signal{SIGIO}), un valore diverso da
zero indica il segnale richiesto, (che può essere anche lo stesso
- \const{SIGIO}). In caso di errore ritorna $-1$.
+ \signal{SIGIO}). In caso di errore ritorna $-1$.
\item[\const{F\_SETSIG}] imposta il segnale da inviare quando diventa
possibile effettuare I/O sul file descriptor in caso di I/O asincrono,
ritorna un valore nullo in caso di successo o $-1$ in caso di errore. Il
- valore zero indica di usare il segnale predefinito, \const{SIGIO}. Un altro
- valore diverso da zero (compreso lo stesso \const{SIGIO}) specifica il
+ valore zero indica di usare il segnale predefinito, \signal{SIGIO}. Un altro
+ valore diverso da zero (compreso lo stesso \signal{SIGIO}) specifica il
segnale voluto; l'uso di un valore diverso da zero permette inoltre, se si è
installato il gestore del segnale come \var{sa\_sigaction} usando
\const{SA\_SIGINFO}, (vedi sez.~\ref{sec:sig_sigaction}), di rendere
argomento può essere omesso. Questa funzionalità avanzata è trattata in
dettaglio in sez.~\ref{sec:file_asyncronous_lease}.
\item[\const{F\_NOTIFY}] attiva un meccanismo di notifica per cui viene
- riportata al processo chiamante, tramite il segnale \const{SIGIO} (o altro
+ riportata al processo chiamante, tramite il segnale \signal{SIGIO} (o altro
segnale specificato con \const{F\_SETSIG}) ogni modifica eseguita o
direttamente sulla directory cui \var{fd} fa riferimento, o su uno dei file
in essa contenuti; ritorna un valore nullo in caso di successo o $-1$ in caso
tipo \texttt{const int *}) che contiene un valore logico (un valore nullo
disabilita, un valore non nullo abilita).
\item[\const{FIOSETOWN}] imposta il processo che riceverà i segnali
- \const{SIGURG} e \const{SIGIO} generati sul file; il terzo argomento deve
+ \signal{SIGURG} e \signal{SIGIO} generati sul file; il terzo argomento deve
essere un puntatore ad un intero (cioè di tipo \texttt{const int *}) il cui
valore specifica il PID del processo.
\item[\const{FIOGETOWN}] legge il processo che riceverà i segnali
- \const{SIGURG} e \const{SIGIO} generati sul file; il terzo argomento deve
+ \signal{SIGURG} e \signal{SIGIO} generati sul file; il terzo argomento deve
essere un puntatore ad un intero (cioè di tipo \texttt{int *}) su cui sarà
scritto il PID del processo.
\item[\const{FIONREAD}] legge il numero di byte disponibili in lettura sul