\begin{verbatim}
typedef void (* sighandler_t)(int)
\end{verbatim}
-e cioè un puntatore ad una funzione \type{void} (cioè senza valore di ritorno)
-e che prende un argomento di tipo \type{int}.\footnote{si devono usare le
+e cioè un puntatore ad una funzione \ctyp{void} (cioè senza valore di ritorno)
+e che prende un argomento di tipo \ctyp{int}.\footnote{si devono usare le
parentesi intorno al nome della funzione per via delle precedenze degli
operatori del C, senza di esse si sarebbe definita una funzione che ritorna
- un puntatore a \type{void} e non un puntatore ad una funzione \type{void}.}
+ un puntatore a \ctyp{void} e non un puntatore ad una funzione \ctyp{void}.}
La funzione \func{signal} quindi restituisce e prende come secondo argomento
un puntatore a una funzione di questo tipo, che è appunto il manipolatore del
segnale.
\headdecl{signal.h}
\funcdecl{int kill(pid\_t pid, int sig)} Invia il segnale \param{sig} al
processo specificato con \param{pid}.
+
+ La funzione restituisce 0 in caso di successo e -1 in caso di errore nel
+ qual caso \func{}
\end{functions}
Lo standard POSIX prevede che il valore 0 per \param{sig} sia usato per
permettano di gestire i segnali in maniera più completa.
+\subsection{I \textit{signal set}}
+\label{sec:sig_sigset}
+
+Come evidenziato nel paragrafo precedente, le funzioni di gestione dei segnali
+dei primi Unix, nate con la semantica inaffidabile, hanno dei limiti non
+superabili; in particolare non è prevista nessuna funzione che permetta di
+gestire correttamente i segnali pendenti e bloccati.
+
+Per questo motivo lo standard POSIX, insieme alla nuova semantica dei segnali
+ha introdotto una interfaccia di gestione completamente nuova, che permette un
+controllo molto più dettagliato. In particolare lo standard ha introdotto un
+nuovo tipo di dato \type{sigset\_t}, che permette di rappresentare un insieme
+di segnali (un \textit{signal set} appunto), in modo da poterlo opportunamente
+manipolare.
+
+In genere il \textit{signal set} è rappresentato da un intero di dimensione
+opportuna (di solito pari al numero di bit dell'architettura della macchina,
+cosa che nel caso dei PC comporta un massimo di 32 segnali distinti), ciascun
+bit del quale è associato ad uno specifico segnale; lo standard POSIX
+definisce cinque funzioni per la manipolazione dei \textit{signal set},
+\func{sigemptyset}, \func{sigfillset}, \func{sigaddset}, \func{sigdelset} e
+\func{sigismember}; i relativi prototipi sono:
+\begin{functions}
+ \headdecl{signal.h}
+
+ \funcdecl{int sigemptyset(sigset\_t *set)} Inizializza un \textit{signal set}
+ vuoto.
+
+ \funcdecl{int sigfillset(sigset\_t *set)} Inizializza un \textit{signal set}
+ pieno (con tutti i segnali).
+
+ \funcdecl{int sigaddset(sigset\_t *set, int signum)} Aggiunge il segnale
+ \param{signum} al \textit{signal set} \param{set}.
+
+ \funcdecl{int sigdelset(sigset\_t *set, int signum)} Toglie il segnale
+ \param{signum} dal \textit{signal set} \param{set}.
+
+ \funcdecl{int sigismember(const sigset\_t *set, int signum)} Controlla se il
+ segnale \param{signum} è nel \textit{signal set} \param{set}
+
+ \bodydesc{Le funzioni prime quattro funzioni ritornano 0, \func{sigismember}
+ ritorna 1 se \param{signum} è in \param{set} e 0 altrimenti, in caso di
+ errore, dovuto al fatto che \param{signum} non è un segnale valido, tutte
+ ritornano -1, con \var{errno} settata a \macro{EINVAL}.}
+\end{functions}
+
+
+
\subsection{La funzione \func{sigaction}}
\label{sec:sig_sigaction}
-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 è:
+
+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)}
\end{figure}
-\subsection{I \textit{signal set}}
-\label{sec:sig_sigset}
-
\subsection{Le funzioni \func{sigpending} e \func{sigsuspend}}
\label{sec:sig_sigpending}