Correzioni minime
authorSimone Piccardi <piccardi@gnulinux.it>
Fri, 29 Mar 2002 23:12:11 +0000 (23:12 +0000)
committerSimone Piccardi <piccardi@gnulinux.it>
Fri, 29 Mar 2002 23:12:11 +0000 (23:12 +0000)
signal.tex

index bbfea4f851f101561bc6adecfae0aaddd5b0f368..1fb456973a7ce88513f71146e5eaa9be970cb2ef 100644 (file)
@@ -1557,8 +1557,9 @@ verrebbe mai pi
 
 Questo problema può essere risolto (ed è la modalità con cui veniva fatto in
 SVr2) usando la funzione \func{longjump} (vedi \secref{sec:proc_longjmp}) per
-uscire dal manipolatore, in modo da sfruttare lo stato di uscita di
-quest'ultima per evitare la chiamata a \func{pause}, con un codice del tipo:
+uscire dal manipolatore; in questo modo, usando lo stato di uscita di
+quest'ultima, si può evitare la chiamata a \func{pause}, con un codice come
+quello riportato in \ref{fig:sig_sleep_incomplete}.
 
 \begin{figure}[!htb]
   \footnotesize \centering
@@ -1597,10 +1598,11 @@ void alarm_hand(int sig) {
   \label{fig:sig_sleep_incomplete}
 \end{figure}
 
-In questo modo all'uscita dal manipolatore si eviterà comunque la chiamata di
-\func{pause}, dato che in questo caso il valore di uscita di \func{setjmp} è
-uno ed il condizionale in (\texttt{\small 15--21}) viene evitato.
-
+In questo caso il manipolatore non ritorna come in \ref{fig:sig_sleep_wrong},
+ma usa \func{longjmp} (\texttt{\small 15--21}) per rientrare nel corpo
+principale del programma; dato che in questo caso il valore di uscita di
+\func{setjmp} è 1 grazie alla condizione in (\texttt{\small 15--21}) si evita
+in ogni caso che \func{pause} sia chiamata a vuoto.
 
 Ma anche questa implementazione comporta dei problemi; in questo caso infatti
 non viene gestita correttamente l'interazione con altri segnali; se infatti il