X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=signal.tex;h=411538c7fb1586d257abebd01ae962deb9fd4f46;hp=09f8325543a3370c5247a3f9877952a6502e02e6;hb=d7305d300866c1e6909dd23743060632b3718178;hpb=2c682ba44f85eb183ddf75760b38bf048f89de53 diff --git a/signal.tex b/signal.tex index 09f8325..411538c 100644 --- a/signal.tex +++ b/signal.tex @@ -662,11 +662,11 @@ segnali sono: situazione precedente. \item[\macro{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 \secref{sec:sys_xxx}. + tempo di CPU disponibile, vedi \secref{sec:sys_resource_limit}. \item[\macro{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 \secref{sec:sys_xxx}. + file, vedi \secref{sec:sys_resource_limit}. \end{basedescript} @@ -714,7 +714,7 @@ di \func{strsignal}. Nel caso si debba mantenere traccia del messaggio sar necessario copiarlo. La seconda funzione deriva da BSD ed è analoga alla funzione \func{perror} -descritta in \secref{sec:sys_strerror}; il suo prototipo è: +descritta sempre in \secref{sec:sys_strerror}; il suo prototipo è: \begin{prototype}{signal.h}{void psignal(int sig, const char *s)} Stampa sullo standard error un messaggio costituito dalla stringa \param{s}, seguita da due punti ed una descrizione del segnale indicato da \param{sig}. @@ -778,28 +778,29 @@ manipolatore; viene mantenuto invece ogni eventuale settaggio dell'azione a programmi eseguiti in background, che altrimenti sarebbero interrotti da una successiva pressione di \texttt{C-c} o \texttt{C-y}. -Per quanto riguarda tutte le altre system call esse vengono tradizionalmente -classificate, proprio in base al loro comportamento nei confronti dei segnali, -in \textsl{lente} (\textit{slow}) e \textsl{veloci} (\textit{fast}). La gran -parte appartiene a quest'ultima categoria che non è influenzata dall'arrivo di -un segnale. In tal caso un eventuale manipolatore viene sempre eseguito dopo -che la system call è stata completata. Esse sono dette \textsl{veloci} proprio -in quanto la loro esecuzione è sostanzialmente immediata e attendere per -eseguire un manipolatore non comporta nessun inconveniente. - -Esistono però dei casi in cui questo non è possibile perché renderebbe -impossibile una risposta pronta al segnale. In generale questo avviene tutte -le volte che si ha a che fare con system call che possono bloccarsi -indefinitamente, (quelle che, per questo, vengono chiamate \textsl{lente}). Un -elenco dei casi in cui si presenta questa situazione è il seguente: +Per quanto riguarda il comportamento di tutte le altre system call si danno +sostanzialmente due casi, a seconda che esse siano \textsl{lente} +(\textit{slow}) o \textsl{veloci} (\textit{fast}). La gran parte di esse +appartiene a quest'ultima categoria, che non è influenzata dall'arrivo di un +segnale. Esse sono dette \textsl{veloci} in quanto la loro esecuzione è +sostanzialmente immediata; la risposta al segnale viene sempre data dopo che +la system call è stata completata, in quanto attendere per eseguire un +manipolatore non comporta nessun inconveniente. + +In alcuni casi però alcune system call (che per questo motivo vengono chiamate +\textsl{lente}) possono bloccarsi indefinitamente. In questo caso non si può +attendere la conclusione della sistem call, perché questo renderebbe +impossibile una risposta pronta al segnale, per cui il manipolatore viene +eseguito prima che la system call sia ritornata. Un elenco dei casi in cui si +presenta questa situazione è il seguente: \begin{itemize} -\item lettura da file che possono bloccarsi in attesa di dati non ancora - presenti (come per certi file di dispositivo, la rete o le pipe). -\item scrittura sugli stessi file, nel caso in cui dati non possano essere +\item la lettura da file che possono bloccarsi in attesa di dati non ancora + presenti (come per certi file di dispositivo, i socket o le pipe). +\item la scrittura sugli stessi file, nel caso in cui dati non possano essere accettati immediatamente. -\item apertura di un file di dispositivo che richiede operazioni non immediate - per una una risposta. -\item operazioni eseguite con \func{ioctl} che non è detto possano essere +\item l'apertura di un file di dispositivo che richiede operazioni non + immediate per una una risposta. +\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 da altri processi. @@ -1400,7 +1401,7 @@ la creazione di zombie. #include #include "macro.h" -void Hand_CHLD(int sig) +void sigchld_hand(int sig) { int errno_save; int status;