\subsection{La funzione \func{sigaction}}
\label{sec:sig_sigaction}
-Per i limiti che hanno le funzioni originarie dei primi Unix nella gestione
-dei segnali, evidenziati al paragrafo precedente, lo standard POSIX ha
-introdotto una interfaccia di gestione completamente diversa, che prevede
-tutta una serie di nuove funzioni la principale delle quali è
-\func{sigaction}, che lo standard raccomanda come sostituta di \func{signal}
-(che da essa infatti può essere ottenuta); il suo prototipo è:
+Come evidenziato nel paragrafo precedente, le funzioni di gestione dei segnali
+dei primi Unix, hanno dei limiti non superabili; per questo motivo lo standard
+POSIX ha introdotto una interfaccia di gestione completamente nuova, che
+permette un controllo molto più dettagliato. La funzione principale di questa
+nuova interfaccia è \func{sigaction}; il cui prototipo è:
\begin{prototype}{signal.h}{int sigaction(int signum, const struct sigaction
*act, struct sigaction *oldact)}
errore, nel qual caso \var{errno} assumerà i valori:
\begin{errlist}
\item[\macro{EINVAL}] Si è specificato un numero di segnale invalido o si è
- cercato di installare il manipolatore per \macro{SIGKILL} o \macro{SIGSTOP}.
-\item[\macro{EFAULT}] Si sono specificati indirizzi non validi.
+ cercato di installare il manipolatore per \macro{SIGKILL} o
+ \macro{SIGSTOP}.
+ \item[\macro{EFAULT}] Si sono specificati indirizzi non validi.
\end{errlist}}
\end{prototype}
-La struttura \var{sigaction} è anch'essa definita dallo standard POSIX, che
-prevede abbia la forma:
+La funzione serve ad installare una nuova azione per il segnale
+\param{signum}; si parla di azione e non di manipolatore come nel caso di
+\func{signal}, in quanto la funzione consente di specificare le varie
+caratteristiche della risposta al segnale, non solo la funzione del
+manipolatore. Lo standard POSIX raccomanda di usare sempre questa funzione al
+posto di \func{signal} (che in genere viene definita tramite essa), in quanto
+offre un controllo completo, sia pure al prezzo di una maggiore complessità
+d'uso.
+
+Se il puntatore \param{act} non è nullo la funzione installa la nuova azione
+da esso specificata, se \param{oldact} non è nullo il valore dell'azione
+corrente viene restituito indietro. Questo permette (specificando \param{act}
+nullo e \param{oldact} non nullo) di superare uno dei limiti di \func{signal},
+che non consente di ottenere l'azione corrente senza installarne una nuova.
+
+Entrambi i puntatori fanno riferimento alla struttura \var{sigaction}, che
+permette di descrivere tutte le caratteristiche dell'azione associata ad un
+segnale. Anch'essa è descritta dallo standard POSIX ed in Linux è definita
+secondo quanto riportato in \secref{fig:sig_sigaction}, il campo
+\var{sa\_restorer}, non previsto dallo standard, è obsoleto e non deve essere
+più usato.
+
\begin{figure}[!htb]
\footnotesize \centering
\begin{minipage}[c]{15cm}
\end{figure}
+\subsection{I \textit{signal set}}
+\label{sec:sig_sigset}
+
-\subsection{Le funzioni \func{sigprocmask} e \func{sigpending}}
+\subsection{Le funzioni \func{sigpending} e \func{sigsuspend}}
\label{sec:sig_sigpending}
\label{sec:sig_reentrant}
-, affrontando inoltre le varie problematiche di programmazione che si devono
-tenere presenti quando si ha a che fare con essi.