+programmi portabili. Per poter effettuare questa impostazione in maniera
+atomica, senza dover ricorrere ad ulteriori chiamate a \func{fcntl} su Linux è
+disponibile anche la funzione \funcd{accept4}, il cui prototipo è:\footnote{la
+ funzione è utilizzabile solo se si è definito la macro \macro{\_GNU\_SOURCE}
+ ed ovviamente non è portabile.}
+
+\begin{funcproto}{
+\fhead{sys/socket.h}
+\fdecl{int accept4(int sockfd, struct sockaddr *addr, socklen\_t *addrlen, int
+ flags)}
+\fdesc{Accetta una connessione sul socket specificato.}
+}
+
+{La funzione ritorna $0$ in caso di successo e $-1$ per un errore, nel qual
+ caso \var{errno} assumerà gli stessi valori di \func{accept}.}
+\end{funcproto}
+
+La funzione aggiunge un quarto argomento \param{flags} usato come maschera
+binaria, e se questo è nullo il suo comportamento è identico a quello di
+\func{accept}. Con \param{flags} si possono impostare contestualmente
+all'esecuzione sul file descriptor restituito i due flag di
+\const{O\_NONBLOCK} e \const{O\_CLOEXEC}, fornendo un valore che sia un OR
+aritmetico delle costanti in tab.\ref{tab:accept4_flags_arg}.
+
+\begin{table}[htb]
+ \centering
+ \footnotesize
+ \begin{tabular}[c]{|l|l|}
+ \hline
+ \textbf{Costante} & \textbf{Significato} \\
+ \hline
+ \hline
+ \constd{SOCK\_NONBLOCK} & imposta sul file descriptor restituito il flag
+ di \const{O\_NONBLOCK}\\
+ \constd{SOCK\_NOXEC} & imposta sul file descriptor restituito il flag
+ di \const{O\_CLOEXEC}\\
+ \hline
+ \end{tabular}
+ \caption{Costanti per i possibili valori dell'argomento \param{flags} di
+ \func{accept4}.}
+ \label{tab:accept4_flags_arg}
+\end{table}