From eb318a83679841eada97ff880e361b5a5f62bb02 Mon Sep 17 00:00:00 2001 From: Simone Piccardi Date: Fri, 22 Jun 2001 18:01:42 +0000 Subject: [PATCH] Completato elenco liste di segnali --- signal.tex | 125 +++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 116 insertions(+), 9 deletions(-) diff --git a/signal.tex b/signal.tex index f7bae08..49e5d9c 100644 --- a/signal.tex +++ b/signal.tex @@ -196,8 +196,8 @@ segnali sono definiti nell'header di sistema \texttt{signal.h}. Il numero totale di segnali presenti è dato dalla macro \texttt{NSIG}, e dato 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, -comparati con quelli definiti in vari standard. +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] \centering @@ -247,11 +247,31 @@ comparati con quelli definiti in vari standard. \hline \end{tabular} \caption{Lista dei segnali in Linux} - \label{tab:sign_signal_list} + \label{tab:sig_signal_list} \end{table} +in \curtab\ si sono riportate anche le caratteristiche di ciascun segnale +indicate nel campo azione con una lettera, la cui legenda è: +\begin{table}[htb] + \centering + \begin{tabular}[c]{c p{6cm}} + A & L'azione di default è terminare il processo. \\ + B & L'azione di default è ignorare il segnale. \\ + C & L'azione di default è terminare il processo e scrivere un \textit{core + dump}. \\ + D & L'azione di default è fermare il processo. \\ + E & Il segnale non può essere intercettato. \\ + F & Il segnale non può essere ignorato.\\ + \end{tabular} + \caption{Legenda delle caratteristiche dei segnali riportate in + \tabref{tab:sig_signal_list}. } + \label{tab:sig_action_leg} +\end{table} + + \subsubsection{Segnali di errore di programma} +\label{sec:sig_prog_error} Questi segnali sono generati quando il sistema, o in certi casi direttamente l'hardware (come per i page fault non validi) rileva un qualche errore @@ -276,7 +296,7 @@ dell'errore. Questi segnali sono: -\begin{itemize} +\begin{list} \item \texttt{SIGFPE} Riporta un errore aritmetico fatale. Benché il nome derivi da \textit{floating point exception} si applica a tutti gli errori aritmetici compresa la divisione per zero e l'overflow. @@ -304,11 +324,98 @@ Questi segnali sono: È tipico ottenere questo segnale dereferenziando un puntatore nullo o non inizializzato leggendo al di la della fine di un vettore. - -\item \texttt{SIGBUS} -\item \texttt{SIGABRT} + +\item \texttt{SIGBUS} In maniera analoga a \texttt{SIGSEGV} questo è un + segnale che viene generato di solito quando si dereferenzia un puntatore non + inzializzato, la differenza con con \texttt{SIGSEGV} è che questo indica un + accesso non valido su un indirizzo esistente (tipo fuori dallo heap o dallo + stack), mentre \texttt{SIGBUS} indica l'accesso ad un indirizzo non valido, + come nel caso di un puntatore non allineato. + +\item \texttt{SIGABRT} Il segnale indica che il programma stesso ha rilevato + un errore che viene riportato chiamando la funzione \texttt{abort} che + genera questo segnale. \item \texttt{SIGTRAP} -\item \texttt{SIGSYS} +\item \texttt{SIGSYS} Sta ad indicare che si è eseguta una istruzione che + richiede l'esecuzione di una system call, ma si è fornito un codice + sbagliato per quest'ultima. +\end{list} + + +\subsection{I segnali di terminazione} +\label{sec:sig_termination} + +Questo tipo di segnali sono usati per terminare un processo; hanno vari nomi a +causa del differente uso che se ne può fare, ed i programmi possono +trattarli in maniera differente. + +La ragione per cui può essere necessario trattare questi segnali è che il +programma può dover eseguire una serie di azioni di pulizia prima di +terminare, come salvare informazioni sullo stato in cui si trova, cancellare +file temporanei, o ripristinare delle condizioni alterate durante il +funzionamento (tipi il modo del terminale o i settaggi di una qualche +periferica). + +L'azione di default di questi segnali è di terminare il processo, questi +segnali sono: +\begin{description} +\item \texttt{SIGTERM} +\item \texttt{SIGINT} +\item \texttt{SIGQUIT} +\item \texttt{SIGKILL} +\item \texttt{SIGHUP} +\end{description} + +\subsection{I segnali di allarme} +\label{sec:sig_alarm} + +\begin{description} +\item \texttt{SIGALRM} +\item \texttt{SIGVTALRM} +\item \texttt{SIGPROF} +\end{description} + + +\subsection{I segnali di I/O asincrono} +\label{sec:sig_asyncio} + +\begin{description} +\item \texttt{SIGIO} +\item \texttt{SIGURG} +\item \texttt{SIGPOLL} +\end{description} + +\subsection{I segnali per il controllo di sessione} +\label{sec:sig_job_control} + + +\begin{description} +\item \texttt{SIGCHLD} +\item \texttt{SIGCONT} +\item \texttt{SIGSTOP} +\item \texttt{SIGTSTP} +\item \texttt{SIGTTIN} +\item \texttt{SIGTTOU} +\end{description} + +\subsection{I segnali di operazioni errate} +\label{sec:sig_oper_error} + +\begin{description} +\item \texttt{SIGPIPE} +\item \texttt{SIGLOST} +\item \texttt{SIGXCPU} +\item \texttt{SIGXFSZ} +\end{description} + + +\subsection{Ulteriori segnali} +\label{sec:sig_misc_sig} + +\begin{description} +\item \texttt{SIGUSR1} e \texttt{SIGUSR2} +\item \texttt{SIGWINCH} +\item \texttt{SIGINFO} +\end{description} -\end{itemize} -- 2.30.2