-Data le loro peculiarità, fin dall'inizio si è posto il problema di come
-gestire le caratteristiche specifiche dei terminali; storicamente i vari
-dialetti di Unix hanno utilizzato diverse funzioni, alla fine con POSIX.1, è
-stata effettuata una standardizzazione, unificando le differenze fra BSD e
-System V in una unica interfaccia, che è quella usata dal Linux.
-
-Alcune di queste funzioni prendono come argomento un file descriptor (in
-origine molte operazioni venivano effettuate con \func{ioctl}), ma ovviamente
-possono essere usate solo con file che corrispondano effettivamente ad un
-terminale (altrimenti si otterrà un errore di \errcode{ENOTTY}); questo può
-essere evitato utilizzando la funzione \funcd{isatty}, il cui prototipo è:
-\begin{prototype}{unistd.h}{int isatty(int desc)}
-
- Controlla se il file descriptor \param{desc} è un terminale.
-
-\bodydesc{La funzione restituisce 1 se \param{desc} è connesso ad un
- terminale, 0 altrimenti.}
-\end{prototype}
-
-Un'altra funzione che fornisce informazioni su un terminale è \funcd{ttyname},
-che permette di ottenere il nome del terminale associato ad un file
-descriptor; il suo prototipo è:
-\begin{prototype}{unistd.h}{char *ttyname(int desc)}
-
- Restituisce il nome del terminale associato al file \param{desc}.
-
- \bodydesc{La funzione restituisce il puntatore alla stringa contenente il
- nome del terminale associato \param{desc} e \val{NULL} in caso di
- errore.}
-\end{prototype}
-
-Si tenga presente che la funzione restituisce un indirizzo di dati statici,
-che pertanto possono essere sovrascritti da successive chiamate. Una funzione
-funzione analoga, anch'essa prevista da POSIX.1, è \funcd{ctermid}, il cui
-prototipo è:
-\begin{prototype}{stdio.h}{char *ctermid(char *s)}
-
- Restituisce il nome del terminale di controllo del processo.
-
- \bodydesc{La funzione restituisce il puntatore alla stringa contenente il
- \textit{pathname} del terminale.}
-\end{prototype}
-
-La funzione scrive il \itindex{pathname} \textit{pathname} del terminale di
-controllo del processo chiamante nella stringa posta all'indirizzo specificato
-dall'argomento \param{s}. La memoria per contenere la stringa deve essere
-stata allocata in precedenza ed essere lunga almeno
-\const{L\_ctermid}\footnote{\const{L\_ctermid} è una delle varie costanti del
- sistema, non trattata esplicitamente in sez.~\ref{sec:sys_characteristics}
- che indica la dimensione che deve avere una stringa per poter contenere il
- nome di un terminale.} caratteri.
-
-Esiste infine una versione \index{funzioni!rientranti} rientrante
-\funcd{ttyname\_r} della funzione \func{ttyname}, che non presenta il problema
-dell'uso di una zona di memoria statica; il suo prototipo è:
-\begin{prototype}{unistd.h}{int ttyname\_r(int desc, char *buff, size\_t len)}
-
- Restituisce il nome del terminale associato al file \param{desc}.
-
- \bodydesc{La funzione restituisce 0 in caso di successo e -1 in caso di
- errore, nel qual caso \var{errno} assumerà i valori:
- \begin{errlist}
- \item[\errcode{ERANGE}] la lunghezza del buffer, \param{len}, non è
+Data le loro peculiarità, fin dalla realizzazione dei primi sistemi unix-like
+si è posto il problema di come gestire le caratteristiche specifiche dei
+terminali. Storicamente i vari dialetti di Unix hanno utilizzato delle
+funzioni specifiche diverse fra loro, ma con la realizzazione dello standard
+POSIX.1-2001 è stata effettuata opportuna unificazione delle funzioni
+attinenti i terminali, sintetizzando le differenze fra BSD e System V in una
+unica interfaccia, che è quella adottata da Linux.
+
+Molte delle funzioni previste dallo standard POSIX.1-2001 prevedono come
+argomento un file descriptor, dato che in origine le relative operazioni
+venivano effettuate con delle opportune chiamate a \func{ioctl}. Ovviamente
+dette funzioni potranno essere usate correttamente soltanto con dei file
+descriptor che corrispondono ad un terminale, in caso contrario lo standard
+richiede che venga restituito un errore di \errcode{ENOTTY}.
+
+Per evitare l'errore, ed anche semplicemente per verificare se un file
+descriptor corrisponde ad un terminale, è disponibile la funzione
+\funcd{isatty}, il cui prototipo è:
+
+\begin{funcproto}{
+\fhead{unistd.h}
+\fdecl{int isatty(int fd)}
+\fdesc{Controlla se un file è un terminale.}
+}
+
+{La funzione ritorna $1$ se \param{fd} è connesso ad un terminale e $0$
+ altrimenti, nel qual caso \var{errno} assumerà uno dei valori:
+ \begin{errlist}
+ \item[\errcode{EBADF}] \param{fd} non è un file descriptor valido.
+ \item[\errcode{EINVAL}] \param{fd} non è associato a un terminale (non
+ ottempera a POSIX.1-2001 che richiederebbe \errcode{ENOTTY}).
+ \end{errlist}
+}
+\end{funcproto}
+
+Un'altra funzione per avere informazioni su un terminale è \funcd{ttyname},
+che permette di ottenere il nome del file di dispositivo del terminale
+associato ad un file descriptor; il suo prototipo è:
+
+\begin{funcproto}{
+\fhead{unistd.h}
+\fdecl{char *ttyname(int fd)}
+\fdesc{Restituisce il nome del terminale associato ad un file descriptor.}
+}
+
+{La funzione ritorna il puntatore alla stringa contenente il nome del
+ terminale in caso di successo e \val{NULL} per un errore, nel qual caso
+ \var{errno} assumerà uno dei valori:
+ \begin{errlist}
+ \item[\errcode{EBADF}] \param{fd} non è un file descriptor valido.
+ \item[\errcode{ENOTTY}] \param{fd} non è associato a un terminale.
+ \end{errlist}
+}
+\end{funcproto}
+
+La funzione restituisce il puntatore alla stringa contenente il nome del file
+di dispositivo del terminale associato a \param{fd}, che però è allocata
+staticamente e può essere sovrascritta da successive chiamate. Per questo
+della funzione esiste anche una versione \index{funzioni!rientranti}
+rientrante, \funcd{ttyname\_r}, che non presenta il problema dell'uso di una
+zona di memoria statica; il suo prototipo è:
+
+\begin{funcproto}{
+\fhead{unistd.h}
+\fdecl{int ttyname\_r(int fd, char *buff, size\_t len)}
+\fdesc{Restituisce il nome del terminale associato ad un file descriptor.}
+}
+
+{La funzione ritorna $0$ in caso di successo e $-1$ per un errore, nel qual
+ caso \var{errno} assumerà uno dei valori:
+ \begin{errlist}
+ \item[\errcode{ERANGE}] la lunghezza del buffer \param{len} non è