X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=signal.tex;h=a73b7fc05867970f483837247d229d7d1728f9f5;hp=c35561b3476b0f97e80b001dbbb9d78710456897;hb=e20a546af590a50e7ac47f68f6c7d4648bb4f31a;hpb=90d696f5005a8ce307042cb6aabfff8335747380 diff --git a/signal.tex b/signal.tex index c35561b..a73b7fc 100644 --- a/signal.tex +++ b/signal.tex @@ -74,7 +74,7 @@ int sig_handler() \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). @@ -129,7 +129,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 -% 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 @@ -402,7 +402,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 -% 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}, @@ -425,7 +425,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 - 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 @@ -584,8 +584,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. -\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} @@ -607,9 +614,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} -\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} @@ -722,3 +736,10 @@ intercettati). \subsection{Funzioni rientranti e default dei segnali} \label{sec:sig_reentrant} + + + + +\subsection{La funzione \func{sigpending}} +\label{sec:sig_sigpending} +