-caratteristiche delle pipe, ma che invece di essere strutture interne del
-kernel, visibili solo attraverso un file descriptor, sono accessibili
-attraverso un \index{inode} inode che risiede sul filesystem, così che i
-processi le possono usare senza dovere per forza essere in una relazione di
-\textsl{parentela}.
-
-Utilizzando una \textit{fifo} tutti i dati passeranno, come per le pipe,
-attraverso un apposito buffer nel kernel, senza transitare dal filesystem;
-\index{inode} l'inode allocato sul filesystem serve infatti solo a fornire un
-punto di riferimento per i processi, che permetta loro di accedere alla stessa
-fifo; il comportamento delle funzioni di lettura e scrittura è identico a
-quello illustrato per le pipe in sez.~\ref{sec:ipc_pipes}.
-
-Abbiamo già visto in sez.~\ref{sec:file_mknod} le funzioni \func{mknod} e
-\func{mkfifo} che permettono di creare una fifo; per utilizzarne una un
-processo non avrà che da aprire il relativo file speciale o in lettura o
-scrittura; nel primo caso sarà collegato al capo di uscita della fifo, e dovrà
-leggere, nel secondo al capo di ingresso, e dovrà scrivere.
-
-Il kernel crea una singola pipe per ciascuna fifo che sia stata aperta, che può
-essere acceduta contemporaneamente da più processi, sia in lettura che in
-scrittura. Dato che per funzionare deve essere aperta in entrambe le
-direzioni, per una fifo di norma la funzione \func{open} si blocca se viene
-eseguita quando l'altro capo non è aperto.
-
-Le fifo però possono essere anche aperte in modalità \textsl{non-bloccante},
-nel qual caso l'apertura del capo in lettura avrà successo solo quando anche
-l'altro capo è aperto, mentre l'apertura del capo in scrittura restituirà
-l'errore di \errcode{ENXIO} fintanto che non verrà aperto il capo in lettura.
-
-In Linux è possibile aprire le fifo anche in lettura/scrittura,\footnote{lo
- standard POSIX lascia indefinito il comportamento in questo caso.}
-operazione che avrà sempre successo immediato qualunque sia la modalità di
-apertura (bloccante e non bloccante); questo può essere utilizzato per aprire
-comunque una fifo in scrittura anche se non ci sono ancora processi il
-lettura; è possibile anche usare la fifo all'interno di un solo processo, nel
-qual caso però occorre stare molto attenti alla possibili situazioni di
-stallo.\footnote{se si cerca di leggere da una fifo che non contiene dati si
- avrà un \itindex{deadlock} deadlock immediato, dato che il processo si
- blocca e non potrà quindi mai eseguire le funzioni di scrittura.}
-
-Per la loro caratteristica di essere accessibili attraverso il filesystem, è
+caratteristiche delle \textit{pipe}, ma che invece di essere strutture interne
+del kernel, visibili solo attraverso un file descriptor, sono accessibili
+attraverso un \itindex{inode} \textit{inode} che risiede sul filesystem, così
+che i processi le possono usare senza dovere per forza essere in una relazione
+di \textsl{parentela}.
+
+Utilizzando una \textit{fifo} tutti i dati passeranno, come per le
+\textit{pipe}, attraverso un apposito buffer nel kernel, senza transitare dal
+filesystem; \itindex{inode} l'\textit{inode} allocato sul filesystem serve
+infatti solo a fornire un punto di riferimento per i processi, che permetta
+loro di accedere alla stessa fifo; il comportamento delle funzioni di lettura
+e scrittura è identico a quello illustrato per le \textit{pipe} in
+sez.~\ref{sec:ipc_pipes}.
+
+Abbiamo già visto in sez.~\ref{sec:file_mknod} le funzioni \func{mknod} e
+\func{mkfifo} che permettono di creare una \textit{fifo}; per utilizzarne una
+un processo non avrà che da aprire il relativo \index{file!speciali} file
+speciale o in lettura o scrittura; nel primo caso sarà collegato al capo di
+uscita della \textit{fifo}, e dovrà leggere, nel secondo al capo di ingresso,
+e dovrà scrivere.
+
+Il kernel crea una singola \textit{pipe} per ciascuna \textit{fifo} che sia
+stata aperta, che può essere acceduta contemporaneamente da più processi, sia
+in lettura che in scrittura. Dato che per funzionare deve essere aperta in
+entrambe le direzioni, per una \textit{fifo} di norma la funzione \func{open}
+si blocca se viene eseguita quando l'altro capo non è aperto.
+
+Le \textit{fifo} però possono essere anche aperte in modalità
+\textsl{non-bloccante}, nel qual caso l'apertura del capo in lettura avrà
+successo solo quando anche l'altro capo è aperto, mentre l'apertura del capo
+in scrittura restituirà l'errore di \errcode{ENXIO} fintanto che non verrà
+aperto il capo in lettura.
+
+In Linux è possibile aprire le \textit{fifo} anche in
+lettura/scrittura,\footnote{lo standard POSIX lascia indefinito il
+ comportamento in questo caso.} operazione che avrà sempre successo
+immediato qualunque sia la modalità di apertura (bloccante e non bloccante);
+questo può essere utilizzato per aprire comunque una fifo in scrittura anche
+se non ci sono ancora processi il lettura; è possibile anche usare la fifo
+all'interno di un solo processo, nel qual caso però occorre stare molto
+attenti alla possibili situazioni di stallo.\footnote{se si cerca di leggere
+ da una fifo che non contiene dati si avrà un \itindex{deadlock}
+ \textit{deadlock} immediato, dato che il processo si blocca e non potrà
+ quindi mai eseguire le funzioni di scrittura.}
+
+Per la loro caratteristica di essere accessibili attraverso il filesystem, è