Piccole correzioni ed avanti sull'AIO
[gapil.git] / socket.tex
index 58a18a5c6f0155be05bff70faf23f035ec09159a..2143cbd99c086d76807e7e01aff600829a897f9d 100644 (file)
@@ -1,6 +1,6 @@
 %% socket.tex
 %%
-%% Copyright (C) 2000-2012 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2014 Simone Piccardi.  Permission is granted to
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
@@ -262,7 +262,7 @@ utilizzare fra quelli disponibili nella famiglia scelta. L'interfaccia dei
 socket permette di scegliere lo stile di comunicazione indicando il tipo di
 socket con l'argomento \param{type} di \func{socket}. Linux mette a
 disposizione vari tipi di socket (che corrispondono a quelli che il manuale
-della \acr{glibc} \cite{glibc} chiama \textit{styles}) identificati dalle
+della \acr{glibc} \cite{GlibcMan} chiama \textit{styles}) identificati dalle
 seguenti costanti:\footnote{le pagine di manuale POSIX riportano solo i primi
   tre tipi, Linux supporta anche gli altri, come si può verificare nel file
   \texttt{include/linux/net.h} dei sorgenti del kernel.}
@@ -293,10 +293,30 @@ seguenti costanti:\footnote{le pagine di manuale POSIX riportano solo i primi
     pertanto non ne parleremo ulteriormente.}
 \end{basedescript}
 
-Si tenga presente che non tutte le combinazioni fra una famiglia di protocolli
-e un tipo di socket sono valide, in quanto non è detto che in una famiglia
-esista un protocollo per ciascuno dei diversi stili di comunicazione appena
-elencati.
+A partire dal kernel 2.6.27 l'argomento \param{type} della funzione
+\func{socket} assume un significato ulteriore perché può essere utlizzato per
+impostare dei flag relativi alle caratteristiche generali del \textit{socket}
+non strettamente attinenti all'indicazione del tipo secondo i valori appena
+illustrati. Essi infatti possono essere combinati con un OR aritmetico delle
+ulteriori costanti:
+\begin{basedescript}{\desclabelwidth{2.9cm}\desclabelstyle{\nextlinelabel}}
+\item[\const{SOCK\_CLOEXEC}] imposta il flag di \textit{close-on-exec}
+  \itindex{close-on-exec} sul file descriptor del socket, ottenendo lo stesso
+  effetto del flag \const{O\_CLOEXEC} di \func{open} (vedi
+  tab.~\ref{tab:open_operation_flag}), di cui costituisce l'analogo.
+
+\item[\const{SOCK\_NONBLOCK}] crea il socket in modalità non-bloccante, con
+  effetti identici ad una successiva chiamata a \func{fcntl} per impostare il
+  flag di \const{O\_NONBLOCK} sul file descriptor (si faccia di nuovo
+  riferimenti al significato di quest'ultimo come spiegato in
+  tab.~\ref{tab:open_operation_flag}).
+\end{basedescript}
+
+
+Si tenga presente inoltre che non tutte le combinazioni fra una famiglia di
+protocolli e un tipo di socket sono valide, in quanto non è detto che in una
+famiglia esista un protocollo per ciascuno dei diversi stili di comunicazione
+appena elencati.
 
 \begin{table}[htb]
   \footnotesize
@@ -561,9 +581,9 @@ il campo \var{sun\_path} deve specificare un indirizzo. Questo ha due forme;
 può essere un file (di tipo socket) nel filesystem o una stringa univoca
 (mantenuta in uno spazio di nomi astratto). Nel primo caso l'indirizzo viene
 specificato come una stringa (terminata da uno zero) corrispondente al
-\itindex{pathname} \textit{pathname} del file; nel secondo invece
-\var{sun\_path} inizia con uno zero e vengono usati come nome i restanti byte
-come stringa, senza terminazione.
+\textit{pathname} del file; nel secondo invece \var{sun\_path} inizia con uno
+zero e vengono usati come nome i restanti byte come stringa, senza
+terminazione.
 
 
 \subsection{La struttura degli indirizzi AppleTalk}
@@ -841,9 +861,10 @@ nell'indirizzo binario che viene memorizzato nell'opportuna struttura
 \struct{in\_addr} (si veda fig.~\ref{fig:sock_sa_ipv4_struct}) situata
 all'indirizzo dato dall'argomento \param{dest} (è espressa in questa forma in
 modo da poterla usare direttamente con il puntatore usato per passare la
-struttura degli indirizzi). La funzione restituisce 0 in caso di successo e 1
-in caso di fallimento.  Se usata con \param{dest} inizializzato a \val{NULL}
-effettua la validazione dell'indirizzo.
+struttura degli indirizzi). La funzione restituisce un valore diverso da zero
+se l'indirizzo è valido e la conversione ha successo e 0 in caso contrario.
+Se usata con \param{dest} inizializzato a \val{NULL} effettua la validazione
+dell'indirizzo.
 
 L'ultima funzione, \func{inet\_ntoa}, converte il valore a 32 bit
 dell'indirizzo (espresso in \textit{network order}) restituendo il puntatore