X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=fileunix.tex;h=bd3ed091fa27e1b6f9a2b66de914992db8be7985;hp=37b090626418cd83b16726298ba994c89f3418b4;hb=6408f44e3fcb3a4931ce5faf9706faf86fc22caa;hpb=81ff87c3e2a6ecd3e33867798cba0d27576f44d0 diff --git a/fileunix.tex b/fileunix.tex index 37b0906..bd3ed09 100644 --- a/fileunix.tex +++ b/fileunix.tex @@ -138,10 +138,11 @@ posto di questi valori numerici: \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 @@ -183,8 +184,8 @@ prototipo 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}. @@ -192,7 +193,7 @@ prototipo 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 @@ -237,7 +238,7 @@ sempre il file descriptor con il valore pi 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 @@ -252,7 +253,8 @@ sempre il file descriptor con il valore pi 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}. \\ @@ -262,7 +264,7 @@ sempre il file descriptor con il valore pi \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 @@ -274,7 +276,7 @@ sempre il file descriptor con il valore pi \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 @@ -291,10 +293,10 @@ sempre il file descriptor con il valore pi \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 +\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 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 @@ -319,9 +321,9 @@ input (avr 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 @@ -334,12 +336,13 @@ La funzione prevede diverse opzioni, che vengono specificate usando vari bit 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 @@ -349,7 +352,7 @@ di \curfig). Essi sono divisi in tre categorie principali: \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} @@ -385,7 +388,7 @@ descriptor ritorna disponibile; il suo prototipo 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. @@ -432,17 +435,17 @@ lettura e scrittura avvengono a partire da questa posizione che viene 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 +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. @@ -450,7 +453,7 @@ un valore qualsiasi con la funzione \func{lseek}, il cui prototipo 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 @@ -465,7 +468,7 @@ seguenti valori\footnote{per compatibilit \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}). @@ -477,7 +480,7 @@ funzione con \code{lseek(fd, 0, SEEK\_CUR)}. 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}). @@ -502,8 +505,7 @@ utilizzando la funzione \func{read}, il cui prototipo 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. @@ -580,8 +582,8 @@ Cerca di leggere \var{count} byte dal file \var{fd}, a partire dalla posizione \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} @@ -607,8 +609,7 @@ funzione \func{write}, il cui prototipo 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. @@ -653,8 +654,8 @@ Cerca di scrivere sul file \var{fd}, a partire dalla posizione \var{offset}, \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}. @@ -704,13 +705,13 @@ stesso file, in particolare occorre tenere presente che: 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] @@ -735,7 +736,7 @@ posizione corrente sul file. Questo ha le conseguenze descritte a suo tempo in 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 @@ -764,13 +765,13 @@ utilizzare meccanismi di sincronizzazione pi 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. @@ -873,7 +874,7 @@ prototipo 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. @@ -926,8 +927,7 @@ prototipo 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. @@ -968,11 +968,11 @@ file descriptor viene usata la funzione \func{fcntl} il cui prototipo 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} @@ -987,63 +987,70 @@ valori \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\_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}] 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 + blocco, altrimenti imposta 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 + ritorna immediatamente restituendo -1 e imposta \var{errno} a \macro{EACCES} + o \macro{EAGAIN} (per i dettagli sul \textit{file locking} vedi \secref{sec:file_locking}). \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 + l'attesa viene interrotta da un segnale la funzione restituisce -1 e imposta \var{errno} a \macro{EINTR} (per i dettagli sul \textit{file locking} vedi \secref{sec:file_locking}). \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 @@ -1063,7 +1070,7 @@ valido anche per l'interazione con i pi 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 @@ -1077,8 +1084,8 @@ per ogni singolo dispositivo. Il prototipo di questa funzione \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}. @@ -1099,8 +1106,8 @@ sia attraverso il valore di ritorno che attraverso il terzo argomento \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*} @@ -1123,10 +1130,10 @@ specifici (ad esempio la gestione dei terminali \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}.