From: Simone Piccardi Date: Wed, 3 Apr 2002 21:23:25 +0000 (+0000) Subject: Un po' di aggiunte sui signal set X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=commitdiff_plain;h=5e1acdd9cd07b413dda5954652d625c299c3c8b1 Un po' di aggiunte sui signal set --- diff --git a/signal.tex b/signal.tex index 3784e17..11c97f7 100644 --- a/signal.tex +++ b/signal.tex @@ -957,6 +957,9 @@ la funzione \func{kill}; il cui prototipo \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 @@ -1628,7 +1631,43 @@ 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}. +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}