X-Git-Url: https://gapil.gnulinux.it/gitweb/?a=blobdiff_plain;ds=inline;f=signal.tex;h=4d748d91a05fbf98770ec688e770f39088777666;hb=6483a787322c614bc6282a0bf0ee001f1bf54b44;hp=7cbda4f9ae2bef49a47f19251e5cfd504a544ece;hpb=78a82bdb333ca71e395ba39a5c03745761341150;p=gapil.git diff --git a/signal.tex b/signal.tex index 7cbda4f..4d748d9 100644 --- a/signal.tex +++ b/signal.tex @@ -1984,25 +1984,24 @@ inline SigFunc * Signal(int signo, SigFunc *func) Per questo motivo si è provveduto, per mantenere un'interfaccia semplificata che abbia le stesse caratteristiche di \func{signal}, a definire una funzione equivalente attraverso \func{sigaction}; la funzione è \code{Signal}, e si -trova definita come \code{inline} nel file \file{wrapper.h} (nei sorgenti -allegati), riportata in \figref{fig:sig_Signal_code}. La riutilizzeremo spesso -in seguito. +trova definita nel file \file{SigHand.c} (nei sorgenti allegati), e riportata +in \figref{fig:sig_Signal_code}. La riutilizzeremo spesso in seguito. \subsection{La gestione della \textsl{maschera dei segnali} o \textit{signal mask}} \label{sec:sig_sigmask} Come spiegato in \secref{sec:sig_semantics} tutti i moderni sistemi unix-like -permettono si bloccare temporaneamente (o di eliminare completamente, impostando -\macro{SIG\_IGN} come azione) la consegna dei segnali ad un processo. Questo è -fatto specificando la cosiddetta \textsl{maschera dei segnali} (o -\textit{signal mask}) del processo\footnote{nel caso di Linux essa è mantenuta - dal campo \var{blocked} della \var{task\_struct} del processo.} cioè -l'insieme dei segnali la cui consegna è bloccata. Abbiamo accennato in -\secref{sec:proc_fork} che la \textit{signal mask} viene ereditata dal padre -alla creazione di un processo figlio, e abbiamo visto al paragrafo precedente -che essa può essere modificata, durante l'esecuzione di un gestore, -attraverso l'uso dal campo \var{sa\_mask} di \var{sigaction}. +permettono si bloccare temporaneamente (o di eliminare completamente, +impostando \macro{SIG\_IGN} come azione) la consegna dei segnali ad un +processo. Questo è fatto specificando la cosiddetta \textsl{maschera dei + segnali} (o \textit{signal mask}) del processo\footnote{nel caso di Linux + essa è mantenuta dal campo \var{blocked} della \var{task\_struct} del + processo.} cioè l'insieme dei segnali la cui consegna è bloccata. Abbiamo +accennato in \secref{sec:proc_fork} che la \textit{signal mask} viene +ereditata dal padre alla creazione di un processo figlio, e abbiamo visto al +paragrafo precedente che essa può essere modificata, durante l'esecuzione di +un gestore, attraverso l'uso dal campo \var{sa\_mask} di \var{sigaction}. Uno dei problemi evidenziatisi con l'esempio di \secref{fig:sig_event_wrong} è che in molti casi è necessario proteggere delle sezioni di codice (nel caso in