Completato I/O formattato, posizionamento, gestione del bufferingm
[gapil.git] / signal.tex
index c35561b3476b0f97e80b001dbbb9d78710456897..072b1d1edeaf638aef100fa2e141f3b3b5c7892c 100644 (file)
@@ -12,6 +12,8 @@ anche essere usati come forma elementare di comunicazione fra processi (ad
 esempio vengono usati per il controllo di sessione), per notificare eventi
 (come la terminazione di un processo figlio), etc.
 
 esempio vengono usati per il controllo di sessione), per notificare eventi
 (come la terminazione di un processo figlio), etc.
 
+
+
 \section{I concetti base}
 \label{sec:sig_base}
 
 \section{I concetti base}
 \label{sec:sig_base}
 
@@ -74,7 +76,7 @@ int sig_handler()
 \end{lstlisting}
 \normalsize
 se un secondo segnale arriva prima che il manipolatore invocato dal primo
 \end{lstlisting}
 \normalsize
 se un secondo segnale arriva prima che il manipolatore invocato dal primo
-abbia eseguito la re-installazione di se stesso il segnale può essere perso o
+abbia eseguito la reinstallazione di se stesso il segnale può essere perso o
 causare il comportamento originale assegnato al segnale (in genere la
 terminazione del processo).
 
 causare il comportamento originale assegnato al segnale (in genere la
 terminazione del processo).
 
@@ -129,7 +131,7 @@ il processo rester
 % Un'altra caratteristica della implementazione inaffidabile è che le chiamate
 % di sistema non sono fatte ripartire automaticamente quando sono interrotte da
 % un segnale, per questo un programma deve controllare lo stato di uscita della
 % Un'altra caratteristica della implementazione inaffidabile è che le chiamate
 % di sistema non sono fatte ripartire automaticamente quando sono interrotte da
 % un segnale, per questo un programma deve controllare lo stato di uscita della
-% chiamata al sistema e riperterla nel caso l'errore riportato da \texttt{errno}
+% chiamata al sistema e ripeterla nel caso l'errore riportato da \texttt{errno}
 % sia \texttt{EINTR}.
 
 Questo ci mostra ad esempio come con la semantica inaffidabile non esista una
 % sia \texttt{EINTR}.
 
 Questo ci mostra ad esempio come con la semantica inaffidabile non esista una
@@ -402,7 +404,7 @@ Questi segnali sono:
 
 %   Per questo segnale le cose sono complicate dal fatto che possono esserci
 %   molte diverse eccezioni che \texttt{SIGFPE} non distingue, mentre lo
 
 %   Per questo segnale le cose sono complicate dal fatto che possono esserci
 %   molte diverse eccezioni che \texttt{SIGFPE} non distingue, mentre lo
-%   standard IEEE per le operazioni in virgola mobile definisce vaire eccezioni
+%   standard IEEE per le operazioni in virgola mobile definisce varie eccezioni
 %   aritmetiche e richiede che esse siano notificate.  
 
 \item[\macro{SIGILL}] Il nome deriva da \textit{illegal instruction},
 %   aritmetiche e richiede che esse siano notificate.  
 
 \item[\macro{SIGILL}] Il nome deriva da \textit{illegal instruction},
@@ -425,7 +427,7 @@ Questi segnali sono:
   inizializzato leggendo al di la della fine di un vettore. 
 \item[\macro{SIGBUS}] Il nome deriva da \textit{bus error}. Come
   \macro{SIGSEGV} questo è un segnale che viene generato di solito quando si
   inizializzato leggendo al di la della fine di un vettore. 
 \item[\macro{SIGBUS}] Il nome deriva da \textit{bus error}. Come
   \macro{SIGSEGV} questo è un segnale che viene generato di solito quando si
-  dereferenzia un puntatore non inzializzato, la differenza è che
+  dereferenzia un puntatore non inizializzato, la differenza è che
   \macro{SIGSEGV} indica un accesso non permesso su un indirizzo esistente
   (tipo fuori dallo heap o dallo stack), mentre \macro{SIGBUS} indica
   l'accesso ad un indirizzo non valido, come nel caso di un puntatore non
   \macro{SIGSEGV} indica un accesso non permesso su un indirizzo esistente
   (tipo fuori dallo heap o dallo stack), mentre \macro{SIGBUS} indica
   l'accesso ad un indirizzo non valido, come nel caso di un puntatore non
@@ -453,7 +455,7 @@ La ragione per cui pu
 programma può dover eseguire una serie di azioni di pulizia prima di
 terminare, come salvare informazioni sullo stato in cui si trova, cancellare
 file temporanei, o ripristinare delle condizioni alterate durante il
 programma può dover eseguire una serie di azioni di pulizia prima di
 terminare, come salvare informazioni sullo stato in cui si trova, cancellare
 file temporanei, o ripristinare delle condizioni alterate durante il
-funzionamento (tipi il modo del terminale o i settaggi di una qualche
+funzionamento (come il modo del terminale o i settaggi di una qualche
 periferica).
 
 L'azione di default di questi segnali è di terminare il processo, questi
 periferica).
 
 L'azione di default di questi segnali è di terminare il processo, questi
@@ -489,10 +491,10 @@ segnali sono:
 
   Se un processo non risponde a nessun altro segnale \macro{SIGKILL} ne causa
   sempre la terminazione (in effetti il fallimento della terminazione di un
 
   Se un processo non risponde a nessun altro segnale \macro{SIGKILL} ne causa
   sempre la terminazione (in effetti il fallimento della terminazione di un
-  processo da parte di \macro{SIGKILL} costituirebbe un funzionamento del
+  processo da parte di \macro{SIGKILL} costituirebbe un malfunzionamento del
   kernel). Talvolta è il sistema stesso che può generare questo segnale quando
   per condizioni particolari il processo non può più essere eseguito neanche
   kernel). Talvolta è il sistema stesso che può generare questo segnale quando
   per condizioni particolari il processo non può più essere eseguito neanche
-  per eseguire il manipolatore.
+  per eseguire un manipolatore.
 \item[\macro{SIGHUP}] Il nome sta per \textit{hang-up}. Segnala che il
   terminale dell'utente si è disconnesso (ad esempio perché si è interrotta la
   rete). Viene usato anche per riportare la terminazione del processo di
 \item[\macro{SIGHUP}] Il nome sta per \textit{hang-up}. Segnala che il
   terminale dell'utente si è disconnesso (ad esempio perché si è interrotta la
   rete). Viene usato anche per riportare la terminazione del processo di
@@ -584,8 +586,15 @@ cui si trattano gli argomenti relativi.  Questi segnali sono:
   o il terminale in uno stato definito prima di fermarsi; se per esempio un
   programma ha disabilitato l'eco sul terminale può installare un manipolatore
   per riabilitarlo prima di fermarsi.
   o il terminale in uno stato definito prima di fermarsi; se per esempio un
   programma ha disabilitato l'eco sul terminale può installare un manipolatore
   per riabilitarlo prima di fermarsi.
-\item[\macro{SIGTTIN}]
-\item[\macro{SIGTTOU}]
+\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 di default è di fermare il processo.
+  L'argomento è trattato in \secref{sec:sess_xxx}.
+\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 di default è di fermare il processo, l'argomento è
+  trattato in \secref{sec:sess_xxx}.
 \end{basedescript}
 
 
 \end{basedescript}
 
 
@@ -607,9 +616,16 @@ 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 \macro{EPIPE} 
   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 \macro{EPIPE} 
-\item[\macro{SIGLOST}] Sta per \textit{Resource lost}.
-\item[\macro{SIGXCPU}] Sta per \textit{CPU time limit exceeded}.
-\item[\macro{SIGXFSZ}] Sta per \textit{File size limit exceeded}.
+\item[\macro{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[\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}. 
+\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}. 
 \end{basedescript}
 
 
 \end{basedescript}
 
 
@@ -619,7 +635,7 @@ segnali sono:
 Raccogliamo qui infine usa serie di segnali che hanno scopi differenti non
 classificabili in maniera omogenea. Questi segnali sono:
 \begin{basedescript}{\desclabelwidth{2.0cm}}
 Raccogliamo qui infine usa serie di segnali che hanno scopi differenti non
 classificabili in maniera omogenea. Questi segnali sono:
 \begin{basedescript}{\desclabelwidth{2.0cm}}
-\item[\macro{SIGUSR1}] e \macro{SIGUSR2} Sono due segnali a disposizione
+\item[\macro{SIGUSR1} e \macro{SIGUSR2}] Sono due segnali a disposizione
   dell'utente che li può usare per quello che vuole. Possono essere utili per
   implementare una comunicazione elementare fra processi diversi, o per
   eseguire a richiesta una operazione utilizzando un manipolatore. L'azione di
   dell'utente che li può usare per quello che vuole. Possono essere utili per
   implementare una comunicazione elementare fra processi diversi, o per
   eseguire a richiesta una operazione utilizzando un manipolatore. L'azione di
@@ -656,7 +672,7 @@ contenuto, che resta valido solo fino alla successiva chiamata di
 necessario copiarlo.
 
 La seconda funzione deriva da BSD ed è analoga alla funzione \func{perror}
 necessario copiarlo.
 
 La seconda funzione deriva da BSD ed è analoga alla funzione \func{perror}
-descritta in \secref{sec:intro_strerror}.
+descritta in \secref{sec:sys_strerror}.
 
 
 \section{La gestione dei segnali}
 
 
 \section{La gestione dei segnali}
@@ -691,8 +707,8 @@ comportamento, pur mantenendone immutato il prototipo\footnote{in realt
   Installa una nuova funzione di gestione (manipolatore) per il segnale
   \param{signum}, usando il manipolatore \param{handler}.
   
   Installa una nuova funzione di gestione (manipolatore) per il segnale
   \param{signum}, usando il manipolatore \param{handler}.
   
-  La funzione ritorna il precedente manipolatore in caso di successo o
-  \macro{SIG\_ERR} in caso di errore.
+  \bodydesc{La funzione ritorna il precedente manipolatore in caso di successo
+    o \macro{SIG\_ERR} in caso di errore.}
 \end{prototype}
 
 In questa definizione si è usato il tipo \type{sighandler\_t} che è una
 \end{prototype}
 
 In questa definizione si è usato il tipo \type{sighandler\_t} che è una
@@ -722,3 +738,10 @@ intercettati).
 \subsection{Funzioni rientranti e default dei segnali}
 \label{sec:sig_reentrant}
 
 \subsection{Funzioni rientranti e default dei segnali}
 \label{sec:sig_reentrant}
 
+
+
+
+
+\subsection{La funzione \func{sigpending}}
+\label{sec:sig_sigpending}
+