X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=signal.tex;h=61d340f4fd6d51c204fbbd1cb3789e781e91b1c7;hp=c34a7d32946ffd6f8cab99bb259b460f99ab667f;hb=041fde8aba0e18bb746653a060619b32ea9240ce;hpb=419f06363260b291c2242aec48ec450f44ba2006 diff --git a/signal.tex b/signal.tex index c34a7d3..61d340f 100644 --- a/signal.tex +++ b/signal.tex @@ -433,16 +433,13 @@ processo che li ha causati. In genere oltre a questo il segnale provoca pure la registrazione su disco di un file di \textit{core dump} che viene scritto in un file \file{core} nella directory corrente del processo al momento dell'errore, che il debugger può usare per ricostruire lo stato del programma -al momento della terminazione. - -Questi segnali sono: +al momento della terminazione. Questi segnali sono: \begin{basedescript}{\desclabelwidth{2.0cm}} \item[\const{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. - - Se il gestore ritorna il comportamento del processo è indefinito, ed - ignorare questo segnale può condurre ad un ciclo infinito. + aritmetici compresa la divisione per zero e l'overflow. Se il gestore + ritorna il comportamento del processo è indefinito, ed ignorare questo + segnale può condurre ad un ciclo infinito. % Per questo segnale le cose sono complicate dal fatto che possono esserci % molte diverse eccezioni che \texttt{SIGFPE} non distingue, mentre lo @@ -578,9 +575,8 @@ sempre la necessit Questi segnali operano in congiunzione con le funzioni di I/O asincrono. Per questo occorre comunque usare \func{fcntl} per abilitare un file descriptor a -generare questi segnali. - -L'azione predefinita è di essere ignorati. Questi segnali sono: +generare questi segnali. L'azione predefinita è di essere ignorati. Questi +segnali sono: \begin{basedescript}{\desclabelwidth{2.0cm}} \item[\const{SIGIO}] Questo segnale viene inviato quando un file descriptor è pronto per eseguire dell'input/output. In molti sistemi solo i @@ -651,10 +647,8 @@ cui si trattano gli argomenti relativi. Questi segnali sono: Questi segnali sono usati per riportare al programma errori generati da operazioni da lui eseguite; non indicano errori del programma quanto errori che impediscono il completamento dell'esecuzione dovute all'interazione con il -resto del sistema. - -L'azione predefinita di questi segnali è di terminare il processo, questi -segnali sono: +resto del sistema. L'azione predefinita di questi segnali è di terminare il +processo, questi segnali sono: \begin{basedescript}{\desclabelwidth{2.0cm}} \item[\const{SIGPIPE}] Sta per \textit{Broken pipe}. Se si usano delle pipe, (o delle FIFO o dei socket) è necessario, prima che un processo inizi a @@ -663,9 +657,12 @@ segnali sono: 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[\const{SIGLOST}] Sta per \textit{Resource lost}. Viene generato quando - c'è un advisory lock su un file NFS, ed il server riparte dimenticando la - situazione precedente. +\item[\const{SIGLOST}] Sta per \textit{Resource lost}. Tradizionalmente è il + segnale che generato quando si ha un advisory lock su un file su NFS che + viene perso perché il server NFS è stato riavviato. Il progetto GNU lo + utilizza per indicare ad un client il crollo inaspettato di un server. In + Linux è definito come sinonimo di \const{SIGIO}.\footnote{ed è segnalato + come BUG nella pagina di manuale.} \item[\const{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}. @@ -805,9 +802,10 @@ presenta questa situazione presenti (come per certi file di dispositivo\index{file!di~dispositivo}, i socket\index{socket} o le pipe). \item la scrittura sugli stessi file, nel caso in cui dati non possano essere - accettati immediatamente. + accettati immediatamente (di nuovo comune per i socket). \item l'apertura di un file di dispositivo che richiede operazioni non - immediate per una risposta. + immediate per una risposta (ad esempio l'apertura di un nastro che deve + essere riavvolto). \item le operazioni eseguite con \func{ioctl} che non è detto possano essere eseguite immediatamente. \item le funzioni di intercomunicazione che si bloccano in attesa di risposte @@ -817,12 +815,12 @@ presenta questa situazione \item la funzione \func{wait} (se nessun processo figlio è ancora terminato). \end{itemize*} -In questo caso si pone il problema di cosa fare una volta che il gestore -sia ritornato. La scelta originaria dei primi Unix era quella di far ritornare +In questo caso si pone il problema di cosa fare una volta che il gestore sia +ritornato. La scelta originaria dei primi Unix era quella di far ritornare anche la system call restituendo l'errore di \errcode{EINTR}. Questa è a tutt'oggi una scelta corrente, ma comporta che i programmi che usano dei -gestori controllino lo stato di uscita delle funzioni per ripeterne la -chiamata qualora l'errore fosse questo. +gestori controllino lo stato di uscita delle funzioni che eseguono una system +call lenta per ripeterne la chiamata qualora l'errore fosse questo. Dimenticarsi di richiamare una system call interrotta da un segnale è un errore comune, tanto che le \acr{glibc} provvedono una macro