\label{tab:file_std_files}
\end{table}
-In \curfig\ si è utilizzata questa situazione come esempio, 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 inode).
+In \figref{tab:file_std_files} si è utilizzata questa situazione come esempio,
+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 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
specificati da \var{mode}.
\bodydesc{La funzione ritorna il file descriptor in caso di successo e -1 in
- caso di errore. In questo caso la variabile \var{errno} viene settata ad
- uno dei valori:
+ caso di errore. In questo caso la variabile \var{errno} assumerà uno dei
+ valori:
\begin{errlist}
\item[\macro{EEXIST}] \var{pathname} esiste e si è specificato
\macro{O\_CREAT} e \macro{O\_EXCL}.
l'accesso in scrittura.
\item[\macro{ENOTDIR}] si è specificato \macro{O\_DIRECTORY} e \var{pathname}
non è una directory.
- \item[\macro{ENXIO}] si sono settati \macro{O\_NOBLOCK} o \macro{O\_WRONLY}
+ \item[\macro{ENXIO}] si sono impostati \macro{O\_NOBLOCK} o \macro{O\_WRONLY}
ed il file è una fifo che non viene letta da nessun processo o
\var{pathname} è un file di dispositivo ma il dispositivo è assente.
\item[\macro{ENODEV}] \var{pathname} si riferisce a un file di dispositivo
solo per le fifo, torneremo questo in \secref{sec:ipc_named_pipe}). \\
\macro{O\_NOCTTY} & se \var{pathname} si riferisce ad un device di
terminale, questo non diventerà il terminale di controllo, anche se il
- processo non ne ha ancora uno (si veda \secref{sec:sess_xxx}). \\
+ processo non ne ha ancora uno (si veda \secref{sec:sess_ctrl_term}). \\
\macro{O\_SHLOCK} & opzione di BSD, acquisisce uno shared lock (vedi
\secref{sec:file_locking}) sul file. Non è disponibile in Linux. \\
\macro{O\_EXLOCK} & opzione di BSD, acquisisce uno lock esclusivo (vedi
opzione è ignorata. \\
\macro{O\_DIRECTORY} & se \var{pathname} non è una directory la chiamata
fallisce. Questo flag è specifico di Linux ed è stato introdotto con il
- kernel 2.1.126 per evitare dei DoS\protect\footnotemark\ quando
+ kernel 2.1.126 per evitare dei
+ \textit{DoS}\index{DoS}\protect\footnotemark\ quando
\func{opendir} viene chiamata su una
fifo o su un device di unità a nastri, non deve essere utilizzato al di
fuori dell'implementazione di \func{opendir}. \\
\hline
\hline % modalità di operazione col file
\macro{O\_APPEND} & il file viene aperto in append mode. Prima di ciascuna
- scrittura la posizione corrente viene sempre settata alla fine del
+ scrittura la posizione corrente viene sempre impostata alla fine del
file. Può causare corruzione del file con NFS se più di un processo scrive
allo stesso tempo.\footnotemark\\
\macro{O\_NONBLOCK} & il file viene aperto in modalità non bloccante per
\macro{O\_NDELAY} & in Linux\footnotemark\ è sinonimo di
\macro{O\_NONBLOCK}.\\
\macro{O\_ASYNC} & apre il file per l'I/O in modalità
- asincrona (vedi \secref{sec:file_asyncronous_io}). Quando è settato viene
+ asincrona (vedi \secref{sec:file_asyncronous_io}). Quando è impostato viene
generato il segnale \macro{SIGIO} tutte le volte che sono disponibili
dati in input sul file. \\
\macro{O\_SYNC} & apre il file per l'input/output sincrono, ogni
\label{tab:file_open_flags}
\end{table}
-\footnotetext[2]{la man page di \func{open} segnala che questa opzione è
- difettosa su NFS, e che i programmi che la usano per stabilire un file di
- lock possono incorrere in una race condition\index{race condition}. Si
- consiglia come alternativa di usare un file con un nome univoco e la
- funzione \func{link} per verificarne l'esistenza.}
+\footnotetext[2]{la pagina di manuale di \func{open} segnala che questa
+ opzione è difettosa su NFS, e che i programmi che la usano per stabilire un
+ file di lock (vedi \secref{sec:ipc_file_lock}) possono incorrere in una race
+ condition\index{race condition}. Si consiglia come alternativa di usare un
+ file con un nome univoco e la funzione \func{link} per verificarne
+ l'esistenza.}
\footnotetext[3]{\textit{Denial of Service}, si chiamano così attacchi miranti
ad impedire un servizio causando una qualche forma di carico eccessivo per
Il nuovo file descriptor non è condiviso con nessun altro processo, (torneremo
sulla condivisione dei file, in genere accessibile dopo una \func{fork}, in
-\secref{sec:file_sharing}). Il nuovo file descriptor è settato di default per
-restare aperto attraverso una \func{exec} (come accennato in
-\secref{sec:proc_exec}) e l'offset è settato all'inizio del file.
+\secref{sec:file_sharing}). Il nuovo file descriptor è impostato per restare
+aperto attraverso una \func{exec} (come accennato in \secref{sec:proc_exec}) e
+l'offset è impostato all'inizio del file.
L'argomento \param{mode} specifica i permessi con cui il file viene
eventualmente creato; i valori possibili sono gli stessi già visti in
dell'argomento \param{flags}. Alcuni di questi bit vanno anche a costituire
il flag di stato del file (o \textit{file status flag}), che è mantenuto nel
campo \var{f\_flags} della struttura \var{file} (al solito si veda lo schema
-di \curfig). Essi sono divisi in tre categorie principali:
+di \figref{fig:file_proc_file}). Essi sono divisi in tre categorie
+principali:
\begin{itemize}
\item \textsl{i bit delle modalità di accesso}: specificano con quale modalità
si accederà al file: i valori possibili sono lettura, scrittura o
lettura/scrittura. Uno di questi bit deve essere sempre specificato quando
- si apre un file. Vengono settati alla chiamata da \func{open}, e possono
+ si apre un file. Vengono impostati alla chiamata da \func{open}, e possono
essere riletti con una \func{fcntl} (fanno parte del \textit{file status
flag}), ma non possono essere modificati.
\item \textsl{i bit delle modalità di apertura}: permettono di specificare
\item \textsl{i bit delle modalità di operazione}: permettono di specificare
alcune caratteristiche del comportamento delle future operazioni sul file
(come la \func{read} o la \func{write}). Anch'essi fanno parte del
- \textit{file status flag}. Il loro valore è settato alla chiamata di
+ \textit{file status flag}. Il loro valore è impostato alla chiamata di
\func{open}, ma possono essere riletti e modificati (insieme alle
caratteristiche operative che controllano) con una \func{fcntl}.
\end{itemize}
Chiude il descrittore \var{fd}.
\bodydesc{La funzione ritorna 0 in caso di successo e -1 in caso di errore,
- ed in questo caso \var{errno} è settata ai valori:
+ ed in questo caso \var{errno} assumerà uno dei valori:
\begin{errlist}
\item[\macro{EBADF}] \var{fd} non è un descrittore valido.
\item[\macro{EINTR}] la funzione è stata interrotta da un segnale.
automaticamente spostata in avanti del numero di byte letti o scritti.
In genere (a meno di non avere richiesto la modalità \macro{O\_APPEND}) questa
-posizione viene settata a zero all'apertura del file. È possibile settarla ad
-un valore qualsiasi con la funzione \func{lseek}, il cui prototipo è:
+posizione viene impostata a zero all'apertura del file. È possibile impostarla
+ad un valore qualsiasi con la funzione \func{lseek}, il cui prototipo è:
\begin{functions}
\headdecl{sys/types.h}
\headdecl{unistd.h}
\funcdecl{off\_t lseek(int fd, off\_t offset, int whence)}
- Setta la posizione attuale nel file.
+ Imposta la posizione attuale nel file.
\bodydesc{La funzione ritorna valore della posizione corrente in caso di
- successo e -1 in caso di errore nel qual caso \var{errno} viene settata ad
- uno dei valori:
+ successo e -1 in caso di errore nel qual caso \var{errno} assumerà uno dei
+ valori:
\begin{errlist}
\item[\macro{ESPIPE}] \param{fd} è una pipe, un socket o una fifo.
\item[\macro{EINVAL}] \param{whence} non è un valore valido.
ed inoltre \macro{EBADF}.}
\end{functions}
-La nuova posizione è settata usando il valore specificato da \param{offset},
+La nuova posizione è impostata usando il valore specificato da \param{offset},
sommato al riferimento dato da \param{whence}; quest'ultimo può assumere i
seguenti valori\footnote{per compatibilità con alcune vecchie notazioni
questi valori possono essere rimpiazzati rispettivamente con 0, 1 e 2 o con
\end{basedescript}
Come accennato in \secref{sec:file_file_size} con \func{lseek} è possibile
-settare la posizione corrente anche al di la della fine del file, e alla
+impostare la posizione corrente anche al di la della fine del file, e alla
successiva scrittura il file sarà esteso. La chiamata non causa nessuna
attività di input/output, si limita a modificare la posizione corrente nel
kernel (cioè \var{f\_pos} in \var{file}, vedi \figref{fig:file_proc_file}).
Si tenga presente inoltre che usare \macro{SEEK\_END} non assicura affatto che
successiva scrittura avvenga alla fine del file, infatti se questo è stato
aperto anche da un altro processo che vi ha scritto, la fine del file può
-essersi spostata, ma noi scriveremo alla posizione settata in precedenza.
+essersi spostata, ma noi scriveremo alla posizione impostata in precedenza.
(questa è una potenziale sorgente di
\textit{race condition}\index{race condition}, vedi \secref{sec:file_atomic}).
Non tutti i file supportano la capacità di eseguire una \func{lseek}, in
questo caso la funzione ritorna l'errore \macro{EPIPE}. Questo, oltre che per
i tre casi citati nel prototipo, vale anche per tutti quei dispositivi che non
-supportano questa funzione, come ad esempio per le \acr{tty}.\footnote{altri
- sistemi, usando \macro{SEEK\_SET}, in questo caso ritornano il numero di
- caratteri che vi sono stati scritti.} Lo standard POSIX però non specifica
-niente al proposito. Infine alcuni device, ad esempio \file{/dev/null}, non
-causano un errore ma restituiscono un valore indefinito.
+supportano questa funzione, come ad esempio per i file di
+terminale.\footnote{altri sistemi, usando \macro{SEEK\_SET}, in questo caso
+ ritornano il numero di caratteri che vi sono stati scritti.} Lo standard
+POSIX però non specifica niente al proposito. Infine alcuni file speciali, ad
+esempio \file{/dev/null}, non causano un errore ma restituiscono un valore
+indefinito.
\subsection{La funzione \func{read}}
Cerca di leggere \var{count} byte dal file \var{fd} al buffer \var{buf}.
\bodydesc{La funzione ritorna il numero di byte letti in caso di successo e
- -1 in caso di errore, nel qual caso \var{errno} viene settata ad uno dei
- valori:
+ -1 in caso di errore, nel qual caso \var{errno} assumerà uno dei valori:
\begin{errlist}
\item[\macro{EINTR}] la funzione è stata interrotta da un segnale prima di
aver potuto leggere qualsiasi dato.
\var{offset}, nel buffer \var{buf}.
\bodydesc{La funzione ritorna il numero di byte letti in caso di successo e -1
- in caso di errore, nel qual caso \var{errno} viene settata secondo i valori
- già visti per \func{read} e \func{lseek}.}
+ in caso di errore, nel qual caso \var{errno} assumerà i valori già visti per
+ \func{read} e \func{lseek}.}
\end{prototype}
\noindent che però diventa accessibile solo con la definizione della macro:
\begin{verbatim}
Scrive \var{count} byte dal buffer \var{buf} sul file \var{fd}.
\bodydesc{La funzione ritorna il numero di byte scritti in caso di successo
- e -1 in caso di errore, nel qual caso \var{errno} viene settata ad uno dei
- valori:
+ e -1 in caso di errore, nel qual caso \var{errno} assumerà uno dei valori:
\begin{errlist}
\item[\macro{EINVAL}] \var{fd} è connesso ad un oggetto che non consente la
scrittura.
\var{count} byte dal buffer \var{buf}.
\bodydesc{La funzione ritorna il numero di byte letti in caso di successo e -1
- in caso di errore, nel qual caso \var{errno} viene settata secondo i valori
- già visti per \func{write} e \func{lseek}.}
+ in caso di errore, nel qual caso \var{errno} assumerà i valori già visti per
+ \func{write} e \func{lseek}.}
\end{prototype}
\noindent e per essa valgono le stesse considerazioni fatte per \func{pread}.
scrittura eccede la dimensione corrente del file questo verrà esteso
automaticamente con l'aggiornamento del campo \var{i\_size} nell'inode.
\item se un file è in modalità \macro{O\_APPEND} tutte le volte che viene
- effettuata una scrittura la posizione corrente viene prima settata alla
+ effettuata una scrittura la posizione corrente viene prima impostata alla
dimensione corrente del file letta 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 \var{file} della \textit{file table}, non c'è nessuna
operazione sul file su disco. Quando la si usa per porsi alla fine del file
- la posizione viene settata leggendo la dimensione corrente dall'inode.
+ la posizione viene impostata leggendo la dimensione corrente dall'inode.
\end{itemize}
\begin{figure}[htb]
corrente nel file varierà per entrambi i processi (in quanto verrà modificato
\var{f\_pos} che è la stesso per entrambi).
-Si noti inoltre che anche i flag di stato del file (quelli settati
+Si noti inoltre che anche i flag di stato del file (quelli impostati
dall'argomento \param{flag} di \func{open}) essendo tenuti nella voce della
\textit{file table}\footnote{per la precisione nel campo \var{f\_flags} di
\var{file}.}, vengono in questo caso condivisi. Ai file però sono associati
Un caso tipico di necessità di accesso condiviso in scrittura è quello in cui
vari processi devono scrivere alla fine di un file (ad esempio un file di
-log). Come accennato in \secref{sec:file_lseek} settare la posizione alla fine
+log). Come accennato in \secref{sec:file_lseek} impostare la posizione alla fine
del file e poi scrivere può condurre ad una
\textit{race condition}\index{race condition}:
infatti può succedere che un secondo processo scriva alla fine
del file fra la \func{lseek} e la \func{write}; in questo caso, come abbiamo
appena visto, il file sarà esteso, ma il nostro primo processo avrà ancora la
-posizione corrente settata con la \func{lseek} che non corrisponde più alla
+posizione corrente impostata con la \func{lseek} che non corrisponde più alla
fine del file, e la successiva \func{write} sovrascriverà i dati del secondo
processo.
Crea una copia del file descriptor \param{oldfd}.
\bodydesc{La funzione ritorna il nuovo file descriptor in caso di successo e
- -1 in caso di errore, nel qual caso \var{errno} viene settata ad uno dei
+ -1 in caso di errore, nel qual caso \var{errno} assumerà uno dei
valori:
\begin{errlist}
\item[\macro{EBADF}] \param{oldfd} non è un file aperto.
Rende \param{newfd} una copia del file descriptor \param{oldfd}.
\bodydesc{La funzione ritorna il nuovo file descriptor in caso di successo e
- -1 in caso di errore, nel qual caso \var{errno} viene settata ad uno dei
- valori:
+ -1 in caso di errore, nel qual caso \var{errno} assumerà uno dei valori:
\begin{errlist}
\item[\macro{EBADF}] \param{oldfd} non è un file aperto o \param{newfd} ha un
valore fuori dall'intervallo consentito per i file descriptor.
sul file \param{fd}.
\bodydesc{La funzione ha valori di ritorno diversi a seconda
- dell'operazione. In caso di errore il valore di ritorno è -1 e la
- variabile \var{errno} viene settata ad un opportuno codice, quelli validi
- in generale sono:
+ dell'operazione. In caso di errore il valore di ritorno è sempre -1 ed il
+ codice dell'errore è restituito nella variabile \var{errno}; i codici
+ possibili dipendono dal tipo di operazione, l'unico valido in generale è:
\begin{errlist}
- \item[\macro{EBADF}] \param{oldfd} non è un file aperto.
+ \item[\macro{EBADF}] \param{fd} non è un file aperto.
\end{errlist}}
\end{functions}
\macro{EINVAL} se \param{arg} è negativo o maggiore del massimo consentito o
\macro{EMFILE} se il processo ha già raggiunto il massimo numero di
descrittori consentito.
-\item[\macro{F\_SETFD}] setta il valore del \textit{file descriptor flag}
+\item[\macro{F\_SETFD}] imposta il valore del \textit{file descriptor flag}
al valore specificato con \param{arg}. Al momento l'unico bit usato è
quello di \textit{close on exec}, identificato dalla costante
\macro{FD\_CLOEXEC}.
\item[\macro{F\_GETFD}] ritorna il valore del \textit{file descriptor flag} di
- \var{fd}, se \macro{FD\_CLOEXEC} è settato i file descriptor aperti vengono
- chiusi attraverso una \func{exec} altrimenti (il default) restano aperti.
+ \var{fd}, se \macro{FD\_CLOEXEC} è impostato i file descriptor aperti
+ vengono chiusi attraverso una \func{exec} altrimenti (il comportamento
+ predefinito) restano aperti.
\item[\macro{F\_GETFL}] ritorna il valore del \textit{file status flag},
- permette cioè di rileggere quei bit settati da \func{open} all'apertura del
+ permette cioè di rileggere quei bit impostati da \func{open} all'apertura del
file che vengono memorizzati (quelli riportati nella prima e terza sezione
di \tabref{tab:file_open_flags}).
-\item[\macro{F\_SETFL}] setta il \textit{file status flag} al valore
- specificato da \param{arg}, possono essere settati solo i bit riportati
- nella terza sezione di \tabref{tab:file_open_flags}.\footnote{NdA da
- verificare.}
-\item[\macro{F\_GETLK}] se un file lock è attivo restituisce nella struttura
- \param{lock} la struttura \type{flock} che impedisce l'acquisizione del
- blocco, altrimenti setta il campo \var{l\_type} a \macro{F\_UNLCK} (per i
- dettagli sul \textit{file locking} vedi \secref{sec:file_locking}).
-\item[\macro{F\_SETLK}] richiede il file lock specificato da \param{lock} se
- \var{l\_type} è \macro{F\_RDLCK} o \macro{F\_WRLLCK} o lo rilascia se
- \var{l\_type} è \macro{F\_UNLCK}. Se il lock è tenuto da qualcun'altro
- ritorna immediatamente restituendo -1 e setta \var{errno} a \macro{EACCES} o
- \macro{EAGAIN} (per i dettagli sul \textit{file locking} vedi
- \secref{sec:file_locking}).
+\item[\macro{F\_SETFL}] imposta il \textit{file status flag} al valore
+ specificato da \param{arg}, possono essere impostati solo i bit riportati
+ nella terza sezione di \tabref{tab:file_open_flags}.\footnote{la pagina di
+ manuale riporta come impostabili solo \macro{O\_APPEND},
+ \macro{O\_NONBLOCK} e \macro{O\_ASYNC}.}
+\item[\macro{F\_GETLK}] richiede un controllo sul file lock specificato da
+ \param{lock}, sovrascrivendo la struttura da esso puntata con il risultato
+ (questa funzionalità è trattata in dettaglio in
+ \secref{sec:file_posix_lock}).
+\item[\macro{F\_SETLK}] richiede o rilascia un file lock a seconda di quanto
+ specificato nella struttura puntata da \param{lock}. Se il lock è tenuto da
+ qualcun'altro ritorna immediatamente restituendo -1 e imposta \var{errno} a
+ \macro{EACCES} o \macro{EAGAIN} (questa funzionalità è trattata in dettaglio
+ in \secref{sec:file_posix_lock}).
\item[\macro{F\_SETLKW}] identica a \macro{F\_SETLK} eccetto per il fatto che
la funzione non ritorna subito ma attende che il blocco sia rilasciato. Se
- l'attesa viene interrotta da un segnale la funzione restituisce -1 e setta
- \var{errno} a \macro{EINTR} (per i dettagli sul \textit{file locking} vedi
- \secref{sec:file_locking}).
+ l'attesa viene interrotta da un segnale la funzione restituisce -1 e imposta
+ \var{errno} a \macro{EINTR} (questa funzionalità è trattata in dettaglio in
+ \secref{sec:file_posix_lock}).
\item[\macro{F\_GETOWN}] restituisce il \acr{pid} del processo o il process
group che è preposto alla ricezione dei segnali \macro{SIGIO} e
\macro{SIGURG} per gli eventi associati al file descriptor \var{fd}. Il
process group è restituito come valore negativo.
-\item[\macro{F\_SETOWN}] setta il processo o process group che riceverà i
+\item[\macro{F\_SETOWN}] imposta il processo o process group che riceverà i
segnali \macro{SIGIO} e \macro{SIGURG} per gli eventi associati al file
- descriptor \var{fd}. I process group sono settati usando valori negativi.
+ descriptor \var{fd}. I process group sono impostati usando valori negativi.
\item[\macro{F\_GETSIG}] restituisce il valore del segnale mandato quando ci
- sono dati disponibili in input su un file descriptor aperto o settato in I/O
- asincrono. Il valore 0 indica il valore default (che è \macro{SIGIO}), un
- valore diverso da zero indica il segnale richiesto, (che può essere lo
- stesso \macro{SIGIO}).
-\item[\macro{F\_SETSIG}] setta il segnale da inviare quando diventa possibile
- effettuare I/O sul file descriptor in caso di I/O asincrono. Il valore zero
- indica di usare il segnale di default, \macro{SIGIO}. Un altro valore
- (compreso lo stesso \macro{SIGIO}) specifica il segnale voluto; l'uso di un
- valore diverso da zero permette inoltre, se si è installato il manipolatore
- del segnale come \var{sa\_sigaction} usando \macro{SA\_SIGINFO}, (vedi
- \secref{sec:sig_sigaction}), di rendere disponibili al manipolatore
- informazioni ulteriori informazioni riguardo il file che ha generato il
- segnale attraverso i valori restituiti in \var{siginfo\_t} (come vedremo in
- \secref{sec:file_asyncronous_io}).
+ sono dati disponibili in input su un file descriptor aperto o impostato in
+ I/O asincrono. Il valore 0 indica il valore predefinito (che è
+ \macro{SIGIO}), un valore diverso da zero indica il segnale richiesto, (che
+ può essere lo stesso \macro{SIGIO}).
+\item[\macro{F\_SETSIG}] imposta il segnale da inviare quando diventa
+ possibile effettuare I/O sul file descriptor in caso di I/O asincrono. Il
+ valore zero indica di usare il segnale predefinito, \macro{SIGIO}. Un altro
+ valore (compreso lo stesso \macro{SIGIO}) specifica il segnale voluto; l'uso
+ di un valore diverso da zero permette inoltre, se si è installato il
+ manipolatore del segnale come \var{sa\_sigaction} usando
+ \macro{SA\_SIGINFO}, (vedi \secref{sec:sig_sigaction}), di rendere
+ disponibili al manipolatore informazioni ulteriori informazioni riguardo il
+ file che ha generato il segnale attraverso i valori restituiti in
+ \type{siginfo\_t} (come vedremo in
+ \secref{sec:file_asyncronous_io}).\footnote{i due comandi \macro{F\_SETSIG}
+ e \macro{F\_GETSIG} sono una estensione specifica di Linux.}
\end{basedescript}
La maggior parte delle funzionalità di \func{fcntl} sono troppo avanzate per
poter essere affrontate in dettaglio a questo punto; saranno riprese più
-avanti quando affronteremo le problematiche ad esse relative.
+avanti quando affronteremo le problematiche ad esse relative (in particolare
+riprenderemo le tematiche relative all'I/O asincrono in
+\secref{sec:file_asyncronous_io} e quelle relative al \textit{file locking} in
+\secref{sec:file_locking}).
Per determinare le modalità di accesso inoltre è necessario estrarre i bit di
accesso (ottenuti con il comando \macro{F\_GETFL}); infatti la definizione
interagire con le stesse funzioni usate per i normali file di dati,
esisteranno sempre caratteristiche peculiari, specifiche dell'hardware e della
funzionalità che ciascuno di essi provvede, che non possono venire comprese in
-questa interfaccia astratta (un caso tipico è il settaggio della velocità di
+questa interfaccia astratta (un caso tipico è l'impostazione della velocità di
una porta seriale, o le dimensioni di un framebuffer).
Per questo motivo l'architettura del sistema ha previsto l'esistenza di una
\bodydesc{La funzione nella maggior parte dei casi ritorna 0, alcune
operazioni usano però il valore di ritorno per restituire informazioni. In
- caso di errore viene sempre restituito -1 e \var{errno} viene settata ad
- uno dei valori seguenti:
+ caso di errore viene sempre restituito -1 ed \var{errno} assumerà uno dei
+ valori:
\begin{errlist}
\item[\macro{ENOTTY}] il file \param{fd} non è associato con un device, o la
richiesta non è applicabile all'oggetto a cui fa riferimento \param{fd}.
\item l'esecuzione di una traccia audio di un CDROM.
\item i comandi di avanti veloce e riavvolgimento di un nastro.
\item il comando di espulsione di un dispositivo rimovibile.
-\item il settaggio della velocità trasmissione di una linea seriale.
-\item il settaggio della frequenza e della durata dei suoni emessi dallo
+\item l'impostazione della velocità trasmissione di una linea seriale.
+\item l'impostazione della frequenza e della durata dei suoni emessi dallo
speaker.
\end{itemize*}
\func{ioctl} in quasi tutte le implementazioni di Unix), qui riportiamo solo i
valori che sono definiti per ogni file:
\begin{basedescript}{\desclabelwidth{2.0cm}}
-\item[\macro{FIOCLEX}] Setta il bit di \textit{close on exec}.
+\item[\macro{FIOCLEX}] Imposta il bit di \textit{close on exec}.
\item[\macro{FIONCLEX}] Cancella il bit di \textit{close on exec}.
\item[\macro{FIOASYNC}] Abilita l'I/O asincrono.
-\item[\macro{FIONBIO}] Abilità l'I/O in modalità non bloccante.
+\item[\macro{FIONBIO}] Abilita l'I/O in modalità non bloccante.
\end{basedescript}
relativi ad operazioni comunque eseguibili anche attraverso \func{fcntl}.