X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=signal.tex;h=84c8ac5f00b1ad2ea340877691da1ec0f5db0082;hp=cc2a06bb6e3fedde1c6c66da109deca89c0d75e4;hb=6c2be511ebf59148d64ae0da7f44e21b2bd92e73;hpb=45e080607c5b618a11038a6afc9f79af9931b2da diff --git a/signal.tex b/signal.tex index cc2a06b..84c8ac5 100644 --- a/signal.tex +++ b/signal.tex @@ -286,12 +286,12 @@ l'immagine della memoria del processo. Questo file costituisce il cosiddetto \textit{core dump}, e contenendo l'immagine della memoria del processo, consente di risalire allo stato dello -\itindex{stack} \textit{stack} (vedi sez.~\ref{sec:proc_mem_layout}) prima -della terminazione. Questo permette di esaminare il contenuto del file un -secondo tempo con un apposito programma (un \textit{debugger} come \cmd{gdb}) -per investigare sulla causa dell'errore, ed in particolare, grazie appunto ai -dati dello \itindex{stack} \textit{stack}, consente di identificare quale -funzione ha causato l'errore. +\textit{stack} (vedi sez.~\ref{sec:proc_mem_layout}) prima della +terminazione. Questo permette di esaminare il contenuto del file un secondo +tempo con un apposito programma (un \textit{debugger} come \cmd{gdb}) per +investigare sulla causa dell'errore, ed in particolare, grazie appunto ai dati +dello \textit{stack}, consente di identificare quale funzione ha causato +l'errore. Si tenga presente che il \textit{core dump} viene creato non solo in caso di errore effettivo, ma anche se il segnale per cui la sua creazione è prevista @@ -348,7 +348,7 @@ esse sono definite nell'header di sistema \headfile{signal.h}. \signal{SIGUSR1} &P & T & Segnale utente numero 1.\\ \signal{SIGSEGV} &AP& C & Errore di accesso in memoria.\\ \signal{SIGUSR2} &P & T & Segnale utente numero 2.\\ - \signal{SIGPIPE} &P & T & Pipe spezzata.\\ + \signal{SIGPIPE} &P & T & \textit{Pipe} spezzata.\\ \signal{SIGALRM} &P & T & Segnale del timer da \func{alarm}.\\ \signal{SIGTERM} &AP& T & Segnale di terminazione (\texttt{C-\bslash}).\\ \signal{SIGCHLD} &P & I & Figlio terminato o fermato.\\ @@ -446,7 +446,7 @@ tab.~\ref{tab:sig_action_leg}). \hline T & L'azione predefinita è terminare il processo.\\ C & L'azione predefinita è terminare il processo e scrivere un - \itindex{core~dump} \textit{core dump}.\\ + \textit{core dump}.\\ I & L'azione predefinita è ignorare il segnale.\\ S & L'azione predefinita è fermare il processo.\\ \hline @@ -494,9 +494,9 @@ gestore non ci fosse stato. L'azione predefinita per tutti questi segnali è causare la terminazione del processo che li ha causati. In genere oltre a questo il segnale provoca pure -la registrazione su disco di un file di \itindex{core~dump} \textit{core - dump}, che un debugger può usare per ricostruire lo stato del programma al -momento della terminazione. Questi segnali sono: +la registrazione su disco di un file di \textit{core dump}, che un debugger +può usare per ricostruire lo stato del programma al momento della +terminazione. Questi segnali sono: \begin{basedescript}{\desclabelwidth{2.0cm}} \item[\signal{SIGFPE}] Riporta un errore aritmetico fatale. Benché il nome derivi da \textit{floating point exception} si applica a tutti gli errori @@ -590,13 +590,12 @@ processo, questi segnali sono: controllato da un altro carattere di controllo, ``\textit{QUIT}'', corrispondente alla sequenza \texttt{C-\bslash} sulla tastiera. A differenza del precedente l'azione predefinita, oltre alla terminazione del processo, - comporta anche la creazione di un \itindex{core~dump} \textit{core dump}. - In genere lo si può pensare come corrispondente ad una condizione di errore - del programma rilevata dall'utente. Per questo motivo non è opportuno fare - eseguire al gestore di questo segnale le operazioni di pulizia normalmente - previste (tipo la cancellazione di file temporanei), dato che in certi casi - esse possono eliminare informazioni utili nell'esame dei \itindex{core~dump} - \textit{core dump}. + comporta anche la creazione di un \textit{core dump}. In genere lo si può + pensare come corrispondente ad una condizione di errore del programma + rilevata dall'utente. Per questo motivo non è opportuno fare eseguire al + gestore di questo segnale le operazioni di pulizia normalmente previste + (tipo la cancellazione di file temporanei), dato che in certi casi esse + possono eliminare informazioni utili nell'esame dei \textit{core dump}. \item[\signal{SIGKILL}] Il nome è utilizzato per terminare in maniera immediata qualunque programma. Questo segnale non può essere né intercettato, né @@ -743,28 +742,28 @@ che impediscono il completamento dell'esecuzione dovute all'interazione con il resto del sistema. L'azione predefinita di questi segnali è normalmente quella di terminare il processo, questi segnali sono: \begin{basedescript}{\desclabelwidth{2.0cm}} -\item[\signal{SIGPIPE}] Sta per \textit{Broken pipe}. Se si usano delle pipe, - (o delle FIFO o dei socket) è necessario, prima che un processo inizi a - scrivere su una di esse, che un altro l'abbia aperta in lettura (si veda - sez.~\ref{sec:ipc_pipes}). Se il processo in lettura non è partito o è - terminato inavvertitamente alla scrittura sulla pipe il kernel genera questo - segnale. Se il segnale è bloccato, intercettato o ignorato la chiamata che - lo ha causato fallisce, restituendo l'errore \errcode{EPIPE}. +\item[\signal{SIGPIPE}] Sta per \textit{Broken pipe}. Se si usano delle + \textit{pipe}, (o delle FIFO o dei socket) è necessario, prima che un + processo inizi a scrivere su una di esse, che un altro l'abbia aperta in + lettura (si veda sez.~\ref{sec:ipc_pipes}). Se il processo in lettura non è + partito o è terminato inavvertitamente alla scrittura sulla \textit{pipe} il + kernel genera questo segnale. Se il segnale è bloccato, intercettato o + ignorato la chiamata che lo ha causato fallisce, restituendo l'errore + \errcode{EPIPE}. \item[\signal{SIGXCPU}] Sta per \textit{CPU time limit exceeded}. Questo segnale è generato quando un processo eccede il limite impostato per il tempo di CPU disponibile, vedi sez.~\ref{sec:sys_resource_limit}. Fino al kernel 2.2 terminava semplicemente il processo, a partire dal kernel 2.4, seguendo le indicazioni dello standard POSIX.1-2001 viene anche generato un - \itindex{core~dump} \textit{core dump}. + \textit{core dump}. \item[\signal{SIGXFSZ}] Sta per \textit{File size limit exceeded}. Questo segnale è generato quando un processo tenta di estendere un file oltre le dimensioni specificate dal limite impostato per le dimensioni massime di un file, vedi sez.~\ref{sec:sys_resource_limit}. Fino al kernel 2.2 terminava semplicemente il processo, a partire dal kernel 2.4, seguendo le indicazioni - dello standard POSIX.1-2001 viene anche generato un \itindex{core~dump} - \textit{core dump}. + dello standard POSIX.1-2001 viene anche generato un \textit{core dump}. \item[\signal{SIGLOST}] Sta per \textit{Resource lost}. Tradizionalmente è il segnale che viene generato quando si perde un advisory lock su un file su @@ -938,7 +937,7 @@ presenta questa situazione è il seguente: \begin{itemize*} \item la lettura da file che possono bloccarsi in attesa di dati non ancora presenti (come per certi \index{file!di~dispositivo} file di dispositivo, i - socket o le pipe); + socket o le \textit{pipe}); \item la scrittura sugli stessi file, nel caso in cui dati non possano essere accettati immediatamente (di nuovo comune per i socket); \item l'apertura di un file di dispositivo che richiede operazioni non