+con le funzioni esaminate finora. Esse vengono selezionate attraverso il
+valore di \param{request} e gli eventuali risultati possono essere restituiti
+sia attraverso il valore di ritorno che attraverso il terzo argomento
+\param{argp}. Sono esempi delle operazioni gestite con una \func{ioctl}:
+\begin{itemize*}
+\item il cambiamento dei font di un terminale.
+\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 l'impostazione della velocità trasmissione di una linea seriale.
+\item l'impostazione della frequenza e della durata dei suoni emessi dallo
+ speaker.
+\end{itemize*}
+
+In generale ogni dispositivo ha un suo insieme di possibili diverse operazioni
+effettuabili attraverso \func{ioctl}, che sono definite nell'header file
+\file{sys/ioctl.h}, e devono essere usate solo sui dispositivi cui fanno
+riferimento. Infatti anche se in genere i valori di \param{request} sono
+opportunamente differenziati a seconda del dispositivo\footnote{il kernel usa
+ un apposito \textit{magic number} per distinguere ciascun dispositivo nella
+ definizione delle macro da usare per \param{request}, in modo da essere
+ sicuri che essi siano sempre diversi, ed il loro uso per dispositivi diversi
+ causi al più un errore. Si veda il capitolo quinto di \cite{LinDevDri} per
+ una trattazione dettagliata dell'argomento.} così che la richiesta di
+operazioni relative ad altri dispositivi usualmente provoca il ritorno della
+funzione con una condizione di errore, in alcuni casi, relativi a valori
+assegnati prima che questa differenziazione diventasse pratica corrente, si
+potrebbero usare valori validi anche per il dispositivo corrente, con effetti
+imprevedibili o indesiderati.
+
+Data la assoluta specificità della funzione, il cui comportamento varia da
+dispositivo a dispositivo, non è possibile fare altro che dare una descrizione
+sommaria delle sue caratteristiche; torneremo ad esaminare in seguito quelle
+relative ad alcuni casi specifici (ad esempio la gestione dei terminali è
+effettuata attraverso \func{ioctl} in quasi tutte le implementazioni di Unix),
+qui riportiamo solo i valori di alcuni comandi che sono definiti per ogni
+file:
+\begin{basedescript}{\desclabelwidth{2.0cm}}
+\item[\const{FIOCLEX}] Imposta il bit di \textit{close on exec}.
+\item[\const{FIONCLEX}] Cancella il bit di \textit{close on exec}.
+\item[\const{FIOASYNC}] Abilita l'I/O asincrono.
+\item[\const{FIONBIO}] Abilita l'I/O in modalità non bloccante.
+\end{basedescript}
+relativi ad operazioni comunque eseguibili anche attraverso \func{fcntl}.
+