In questo caso è possibile una situazione in cui i segnali possono essere
perduti; si consideri il seguente segmento di codice in cui la prima
operazione del manipolatore è quella di reinstallare se stesso:
In questo caso è possibile una situazione in cui i segnali possono essere
perduti; si consideri il seguente segmento di codice in cui la prima
operazione del manipolatore è quella di reinstallare se stesso:
int sig_handler(); /* handler function */
...
signal(SIGINT, sig_handler); /* establish handler */
int sig_handler(); /* handler function */
...
signal(SIGINT, sig_handler); /* establish handler */
se un secondo segnale arriva prima che il manipolatore invocato dal primo
abbia eseguito la re-installazione di se stesso il segnale può essere perso o
causare il comportamento originale assegnato al segnale (in genere la
se un secondo segnale arriva prima che il manipolatore invocato dal primo
abbia eseguito la re-installazione di se stesso il segnale può essere perso o
causare il comportamento originale assegnato al segnale (in genere la
processo l'occorrenza del segnale. Si consideri il seguente segmento di
codice il cui scopo sarebbe quello di fermare il processo fino all'occorrenza
di un opportuno segnale:
processo l'occorrenza del segnale. Si consideri il seguente segmento di
codice il cui scopo sarebbe quello di fermare il processo fino all'occorrenza
di un opportuno segnale:
l'idea è che quando il processo trova il flag a zero viene messo in sleep e
verrà risvegliato solo dalla ricezione di un segnale. Il manipolatore si
limita in questo caso a settare il flag a uno; all'uscita dal manipolatore la
l'idea è che quando il processo trova il flag a zero viene messo in sleep e
verrà risvegliato solo dalla ricezione di un segnale. Il manipolatore si
limita in questo caso a settare il flag a uno; all'uscita dal manipolatore la
devono usare nei programmi. Tutti i nomi e le funzioni che concernono i
segnali sono definiti nell'header di sistema \texttt{signal.h}.
devono usare nei programmi. Tutti i nomi e le funzioni che concernono i
segnali sono definiti nell'header di sistema \texttt{signal.h}.
che i numeri dei segnali sono allocati progressivamente, essa corrisponde
anche al successivo del valore numerico assegnato all'ultimo segnale definito.
In \ntab\ si è riportato l'elenco completo dei segnali definiti in Linux
(estratto dalle man page), comparati con quelli definiti in vari standard.
\begin{table}[htb]
che i numeri dei segnali sono allocati progressivamente, essa corrisponde
anche al successivo del valore numerico assegnato all'ultimo segnale definito.
In \ntab\ si è riportato l'elenco completo dei segnali definiti in Linux
(estratto dalle man page), comparati con quelli definiti in vari standard.
\begin{table}[htb]
SIGINT &$\bullet$&&$\bullet$& A & Interrupt da tastiera (\cmd{C-c})\\
SIGQUIT &$\bullet$&&$\bullet$& C & Quit da tastiera (\cmd{C-y}) \\
SIGILL &$\bullet$&&$\bullet$& C & Istruzione illegale\\
SIGINT &$\bullet$&&$\bullet$& A & Interrupt da tastiera (\cmd{C-c})\\
SIGQUIT &$\bullet$&&$\bullet$& C & Quit da tastiera (\cmd{C-y}) \\
SIGILL &$\bullet$&&$\bullet$& C & Istruzione illegale\\
SIGTSTP &$\bullet$&&$\bullet$& D & Stop typed at tty \\
SIGTTIN &$\bullet$&&$\bullet$& D & tty input for background process \\
SIGTTOU &$\bullet$&&$\bullet$& D & tty output for background process \\
SIGTSTP &$\bullet$&&$\bullet$& D & Stop typed at tty \\
SIGTTIN &$\bullet$&&$\bullet$& D & tty input for background process \\
SIGTTOU &$\bullet$&&$\bullet$& D & tty output for background process \\
- SIGBUS &&$\bullet$&$\bullet$& C & Bus error (bad memory access) \\
- SIGPOLL &&$\bullet$&$\bullet$& A & Pollable event (Sys V). Synonym of SIGIO\\
+ SIGBUS &&$\bullet$&$\bullet$& C & Bus error (bad memory access) \\
+ SIGPOLL &&$\bullet$&$\bullet$& A & Pollable event (Sys V). Synonym of SIGIO\\
SIGPROF &&$\bullet$&$\bullet$& A & Profiling timer expired \\
SIGSYS &&$\bullet$&$\bullet$& C & Bad argument to routine (SVID)\\
SIGTRAP &&$\bullet$&$\bullet$& C & Trace/breakpoint trap \\
SIGPROF &&$\bullet$&$\bullet$& A & Profiling timer expired \\
SIGSYS &&$\bullet$&$\bullet$& C & Bad argument to routine (SVID)\\
SIGTRAP &&$\bullet$&$\bullet$& C & Trace/breakpoint trap \\
\label{sec:sig_prog_error}
Questi segnali sono generati quando il sistema, o in certi casi direttamente
\label{sec:sig_prog_error}
Questi segnali sono generati quando il sistema, o in certi casi direttamente