Aggiunti un po' di prototipi e una tabellina
authorSimone Piccardi <piccardi@gnulinux.it>
Sat, 13 Apr 2002 17:40:40 +0000 (17:40 +0000)
committerSimone Piccardi <piccardi@gnulinux.it>
Sat, 13 Apr 2002 17:40:40 +0000 (17:40 +0000)
signal.tex

index b60bd7aeeb0c5cab3b9e110fb6a2ce81cbd56da2..3187101587105ffb6066fb68ecd5345f0a9bd0e1 100644 (file)
@@ -1768,7 +1768,6 @@ La funzione principale dell'interfaccia standard POSIX.1 per i segnali 
 \func{sigaction}, essa ha sostanzialemente le stesse funzioni di
 \func{signal}, permette cioè di specificare come un segnale può essere gestito
 da un processo. Il suo prototipo è:
-
 \begin{prototype}{signal.h}{int sigaction(int signum, const struct sigaction
     *act, struct sigaction *oldact)} 
   
@@ -1850,7 +1849,7 @@ segnali; i valori possibili ed il relativo significato sono riportati in
   \centering
   \begin{tabular}[c]{|l|p{8cm}|}
     \hline
-    \textbf{Valore} & \textbf{Timer} \\
+    \textbf{Valore} & \textbf{Significato} \\
     \hline
     \hline
     \macro{SA\_NOCLDSTOP}& Se il segnale è \macro{SIGCHLD} allora non deve
@@ -1917,8 +1916,58 @@ che in molti casi 
 sezione fra il test e la eventuale cancellazione del flag che testimoniava
 l'avvenuta occorrenza del segnale) in modo da essere sicuri che essi siano
 eseguiti senza interruzioni. Le operazioni più semplici, come l'assegnazione o
-il controllo di una variabile di norma (per essere sicuri si può usare il tipo
-\type{sig\_atomic\_t}).
+il controllo di una variabile (per essere sicuri si può usare il tipo
+\type{sig\_atomic\_t}) di norma sono atomiche, ma quando le operazioni sono
+più complesse si può usare la funzione \func{sigprocmask} per bloccare uno o
+più segnali; il suo prototipo è:
+\begin{prototype}{signal.h}
+{int sigprocmask(int how, const sigset\_t *set, sigset\_t *oldset)} 
+  
+  Cambia la \textit{signal mask} del processo corrente.
+  
+  \bodydesc{La funzione restituisce zero in caso di successo e -1 per un
+    errore, nel qual caso \var{errno} assumerà i valori:
+  \begin{errlist}
+  \item[\macro{EINVAL}] Si è specificato un numero di segnale invalido.
+  \item[\macro{EFAULT}] Si sono specificati indirizzi non validi.
+  \end{errlist}}
+\end{prototype}
+
+La funzione 
+
+
+\begin{table}[htb]
+  \footnotesize
+  \centering
+  \begin{tabular}[c]{|l|p{8cm}|}
+    \hline
+    \textbf{Valore} & \textbf{Significato} \\
+    \hline
+    \hline
+    \macro{SIG\_BLOCK}   & .\\
+    \macro{SIG\_UNBLOCK} & .\\
+    \macro{SIG\_SETMASK} & .\\
+    \hline
+  \end{tabular}
+  \caption{Valori e significato dell'argomento \param{how} della funzione
+    \func{sigprocmask}.}
+  \label{tab:sig_procmask_how}
+\end{table}
+
+
+Un altro 
+\begin{prototype}{signal.h}
+{int sigsuspend(const sigset\_t *mask)} 
+  
+  Cambia la \textit{signal mask} del processo corrente.
+  
+  \bodydesc{La funzione restituisce zero in caso di successo e -1 per un
+    errore, nel qual caso \var{errno} assumerà i valori:
+  \begin{errlist}
+  \item[\macro{EINVAL}] Si è specificato un numero di segnale invalido.
+  \item[\macro{EFAULT}] Si sono specificati indirizzi non validi.
+  \end{errlist}}
+\end{prototype}