Correzione ortografica
[gapil.git] / signal.tex
index 0026cda568e002f288163801d014a5b3adae889f..3fada26d81aae213d2506bc2aafe79958443ce52 100644 (file)
@@ -289,8 +289,8 @@ Il numero totale di segnali presenti 
 che i numeri dei segnali sono allocati progressivamente, essa corrisponde
 anche al successivo del valore numerico assegnato all'ultimo segnale definito.
 In \tabref{tab:sig_signal_list} si è riportato l'elenco completo dei segnali
-definiti in Linux (estratto dalle man page), comparati con quelli definiti in
-vari standard.
+definiti in Linux (estratto dalle pagine di manuale), comparati con quelli
+definiti in vari standard.
 
 \begin{table}[htb]
   \footnotesize
@@ -617,25 +617,26 @@ cui si trattano gli argomenti relativi.  Questi segnali sono:
   gestori per far si che un programma produca una qualche azione speciale
   se viene fermato e riavviato, come per esempio riscrivere un prompt, o
   inviare un avviso. 
-\item[\macro{SIGSTOP}] Il segnale ferma un processo (lo porta in uno stato di
-  sleep); il segnale non può essere né intercettato, né ignorato, né bloccato.
+\item[\macro{SIGSTOP}] Il segnale ferma un processo (lo porta cioè in uno
+  stato di sleep, vedi \secref{sec:proc_sched}); il segnale non può essere né
+  intercettato, né ignorato, né bloccato.
 \item[\macro{SIGTSTP}] Il nome sta per \textit{interactive stop}. Il segnale
   ferma il processo interattivamente, ed è generato dal carattere SUSP
-  (prodotto dalla combinazione \macro{C-z}), ed al contrario di
+  (prodotto dalla combinazione \cmd{C-z}), ed al contrario di
   \macro{SIGSTOP} può essere intercettato e ignorato. In genere un programma
   installa un gestore per questo segnale quando vuole lasciare il sistema
   o il terminale in uno stato definito prima di fermarsi; se per esempio un
   programma ha disabilitato l'eco sul terminale può installare un gestore
   per riabilitarlo prima di fermarsi.
 \item[\macro{SIGTTIN}] Un processo non può leggere dal terminale se esegue una
-  sessione di lavoro in background. Quando un processo in background tenta di
-  leggere da un terminale viene inviato questo segnale a tutti i processi
-  della sessione di lavoro. L'azione predefinita è di fermare il processo.
-  L'argomento è trattato in \secref{sec:sess_xxx}.
+  sessione di lavoro in \textit{background}. Quando un processo in background
+  tenta di leggere da un terminale viene inviato questo segnale a tutti i
+  processi della sessione di lavoro. L'azione predefinita è di fermare il
+  processo.  L'argomento è trattato in \secref{sec:sess_job_control_overview}.
 \item[\macro{SIGTTOU}] Segnale analogo al precedente \macro{SIGTTIN}, ma
   generato quando si tenta di scrivere o modificare uno dei modi del
   terminale. L'azione predefinita è di fermare il processo, l'argomento è
-  trattato in \secref{sec:sess_xxx}.
+  trattato in \secref{sec:sess_job_control_overview}.
 \end{basedescript}
 
 
@@ -949,7 +950,7 @@ la funzione \func{kill}; il cui prototipo 
   \funcdecl{int kill(pid\_t pid, int sig)} Invia il segnale \param{sig} al
   processo specificato con \param{pid}.
   
-  \bodydesc{ La funzione restituisce 0 in caso di successo e -1 in caso di
+  \bodydesc{La funzione restituisce 0 in caso di successo e -1 in caso di
     errore nel qual caso \var{errno} può assumere i valori:
     \begin{errlist}
     \item[\macro{EINVAL}] Il segnale specificato non esiste.
@@ -1011,14 +1012,14 @@ e che permette di inviare un segnale a tutto un \textit{process group} (vedi
 \secref{sec:sess_xxx}).
 
 Solo l'amministratore può inviare un segnale ad un processo qualunque, in
-tutti gli altri casi il \textit{real user id} o l'\textit{effective user id}
-del processo chiamante devono corrispondere al \textit{real user id} o al
-\textit{saved user id} della destinazione. Fa eccezione il caso in cui il
-segnale inviato sia \macro{SIGCONT}, nel quale occorre che entrambi i processi
-appartengano alla stessa sessione. Inoltre, dato il ruolo fondamentale che
-riveste nel sistema (si ricordi quanto visto in \secref{sec:sig_termination}),
-non è possibile inviare al processo 1 (cioè a \cmd{init}) segnali per i quali
-esso non abbia un gestore installato.
+tutti gli altri casi l'userid reale o l'userid effettivo del processo
+chiamante devono corrispondere all'userid reale o all'userid salvato della
+destinazione. Fa eccezione il caso in cui il segnale inviato sia
+\macro{SIGCONT}, nel quale occorre che entrambi i processi appartengano alla
+stessa sessione. Inoltre, dato il ruolo fondamentale che riveste nel sistema
+(si ricordi quanto visto in \secref{sec:sig_termination}), non è possibile
+inviare al processo 1 (cioè a \cmd{init}) segnali per i quali esso non abbia
+un gestore installato.
 
 Infine, seguendo le specifiche POSIX 1003.1-2001, l'uso della chiamata
 \code{kill(-1, sig)} comporta che il segnale sia inviato (con la solita
@@ -1298,8 +1299,8 @@ La granularit
 questo sia sotto BSD4.3 che in SUSv2 è stata definita la funzione
 \func{usleep} (dove la \texttt{u} è intesa come sostituzione di $\mu$); i due
 standard hanno delle definizioni diverse, ma le \acr{glibc}
-seguono\footnote{secondo la man page almeno dalla versione 2.2.2.} seguono
-quella di SUSv2 che prevede il seguente prototipo:
+seguono\footnote{secondo la pagina di manuale almeno dalla versione 2.2.2.}
+seguono quella di SUSv2 che prevede il seguente prototipo:
 \begin{prototype}{unistd.h}{int usleep(unsigned long usec)}
   
   Pone il processo in stato di sleep per \param{usec} microsecondi.
@@ -1379,11 +1380,13 @@ pu
 completare la procedura di terminazione in modo da evitare la formazione di
 zombie.
 
-In \figref{fig:sig_sigchld_handl} è mostrato il codice della nostra
-implementazione del gestore; se aggiungiamo al codice di
-\file{ForkTest.c} l'installazione di questo gestore potremo verificare che
-ripetendo l'esempio visto in \secref{sec:proc_termination} che non si ha più
-la creazione di zombie.
+In \figref{fig:sig_sigchld_handl} è mostrato il codice contenente una
+implementazione generica di una routine di gestione per \macro{SIGCHLD}, (che
+si trova nei sorgenti allegati nel file \file{HandSIGCHLD.c}); se ripetiamo i
+test di \secref{sec:proc_termination}, invocando \cmd{forktest} con l'opzione
+\cmd{-s} (che si limita ad effettuare l'installazione di questa funzione come
+gestore di \macro{SIGCHLD}) potremo verificare che non si ha più la creazione
+di zombie.
 
 %  è pertanto
 % naturale usare un esempio che ci permette di concludere la trattazione della
@@ -1402,7 +1405,7 @@ la creazione di zombie.
 #include <sys/wait.h>
 #include "macro.h"
 
-void sigchld_hand(int sig)
+void HandSIGCHLD(int sig)
 {
     int errno_save;
     int status;
@@ -1425,18 +1428,19 @@ void sigchld_hand(int sig)
     \end{lstlisting}
   \end{minipage} 
   \normalsize 
-  \caption{Un gestore per il segnale \texttt{SIGCHLD}.} 
+  \caption{Codice di una funzione generica di gestione per il segnale
+    \texttt{SIGCHLD}.}  
   \label{fig:sig_sigchld_handl}
 \end{figure}
 
 Il codice del gestore è di lettura immediata; come buona norma di
 programmazione (si ricordi quanto accennato \secref{sec:sys_errno}) si
 comincia (\texttt{\small 12-13}) con il salvare lo stato corrente di
-\var{errno}, in modo da poterlo ripristinare prima del ritorno del
-gestore (\texttt{\small 22-23}). In questo modo si preserva il valore
-della variabile visto dal corso di esecuzione principale del processo, che
-sarebbe altrimenti sarebbe sovrascritto dal valore restituito nella successiva
-chiamata di \func{wait}.
+\var{errno}, in modo da poterlo ripristinare prima del ritorno del gestore
+(\texttt{\small 22-23}). In questo modo si preserva il valore della variabile
+visto dal corso di esecuzione principale del processo, che sarebbe altrimenti
+sarebbe sovrascritto dal valore restituito nella successiva chiamata di
+\func{wait}.
 
 Il compito principale del gestore è quello di ricevere lo stato di
 terminazione del processo, cosa che viene eseguita nel ciclo in
@@ -1915,8 +1919,8 @@ istruzione illecita o di violazione di memoria) mentre alcuni segnali di
 controllo (\macro{SIGCHLD}, \macro{SIGTRAP} e \macro{SIGPOLL}) forniscono
 altre informazioni speecifiche.  In tutti i casi il valore del campo è
 riportato attraverso delle costanti (le cui definizioni si trovano
-\file{bits/siginfo.h}) il cui elenco dettagliato è disponibile nella man page
-di \func{sigaction}.
+\file{bits/siginfo.h}) il cui elenco dettagliato è disponibile nella pagina di
+manuale di di \func{sigaction}.
 
 Il resto della struttura è definito come \ctyp{union} ed i valori
 eventualmente presenti dipendono dal segnale, così \macro{SIGCHLD} ed i