-Un meccanismo di comunicazione molto simile alle pipe, ma che non presenta il
-problema della unidirezionalità del flusso dei dati, è quello dei cosiddetti
-\textsl{socket locali} (o \textit{Unix domain socket}). Tratteremo l'argomento
-dei socket in cap.~\ref{cha:socket_intro},\footnote{si tratta comunque di
- oggetti di comunicazione che, come le pipe, sono utilizzati attraverso dei
- file descriptor.} nell'ambito dell'interfaccia generale che essi forniscono
-per la programmazione di rete; e vedremo anche
-(in~sez.~\ref{sec:sock_sa_local}) come si possono definire dei
-\index{file!speciali} file speciali (di tipo socket, analoghi a quello
-associati alle fifo) cui si accede però attraverso quella medesima
-interfaccia; vale però la pena esaminare qui una modalità di uso dei socket
-locali\footnote{la funzione \func{socketpair} è stata introdotta in BSD4.4, ma
- è supportata in genere da qualunque sistema che fornisca l'interfaccia dei
- socket.} che li rende sostanzialmente identici ad una pipe bidirezionale.
-
-La funzione \funcd{socketpair} infatti consente di creare una coppia di file
-descriptor connessi fra di loro (tramite un socket, appunto), senza dover
-ricorrere ad un \index{file!speciali} file speciale sul filesystem, i
-descrittori sono del tutto analoghi a quelli che si avrebbero con una chiamata
-a \func{pipe}, con la sola differenza è che in questo caso il flusso dei dati
-può essere effettuato in entrambe le direzioni. Il prototipo della funzione è:
-\begin{functions}
- \headdecl{sys/types.h}
- \headdecl{sys/socket.h}
-
- \funcdecl{int socketpair(int domain, int type, int protocol, int sv[2])}
-
- Crea una coppia di socket connessi fra loro.
-
- \bodydesc{La funzione restituisce 0 in caso di successo e -1 in caso di
- errore, nel qual caso \var{errno} assumerà uno dei valori:
+Un meccanismo di comunicazione molto simile alle \textit{pipe}, ma che non
+presenta il problema della unidirezionalità del flusso dei dati, è quello dei
+cosiddetti \textsl{socket locali} (o \textit{Unix domain socket}). Tratteremo
+in generale i socket in cap.~\ref{cha:socket_intro}, nell'ambito
+dell'interfaccia che essi forniscono per la programmazione di rete, e vedremo
+anche (in~sez.~\ref{sec:sock_sa_local}) come si possono utilizzare i
+\index{file!speciali} file speciali di tipo socket, analoghi a quelli
+associati alle \textit{fifo} (si rammenti sez.~\ref{sec:file_file_types}) cui
+si accede però attraverso quella medesima interfaccia; vale però la pena
+esaminare qui una modalità di uso dei socket locali che li rende
+sostanzialmente identici ad una \textit{pipe} bidirezionale.
+
+La funzione di sistema \funcd{socketpair}, introdotta da BSD ma supportata in
+genere da qualunque sistema che fornisca l'interfaccia dei socket ed inclusa
+in POSIX.1-2001, consente infatti di creare una coppia di file descriptor
+connessi fra loro (tramite un socket, appunto) senza dover ricorrere ad un
+\index{file!speciali} file speciale sul filesystem. I descrittori sono del
+tutto analoghi a quelli che si avrebbero con una chiamata a \func{pipe}, con
+la sola differenza è che in questo caso il flusso dei dati può essere
+effettuato in entrambe le direzioni. Il prototipo della funzione è:
+
+\begin{funcproto}{
+\fhead{sys/types.h}
+\fhead{sys/socket.h}
+\fdecl{int socketpair(int domain, int type, int protocol, int sv[2])}
+\fdesc{Crea una coppia di socket connessi fra loro.}
+}
+
+{La funzione ritorna $0$ in caso di successo e $-1$ per un errore, nel qual
+ caso \var{errno} assumerà uno dei valori: