Ancora reindicizzazioni, più CLONE_VFORK, CLONE_VM, CLONE_PTRACED
[gapil.git] / signal.tex
index bde6dfcedc1619d500a0a1e99b5f7cd015b7585e..4463fb009b9298f7d39feeeecbcae03fd2131174 100644 (file)
@@ -341,7 +341,7 @@ esse sono definite nell'header di sistema \headfile{signal.h}.
     \signal{SIGILL}  &PA& C & Istruzione illecita.\\
     \signal{SIGTRAP} &S & C & Trappole per un Trace/breakpoint.\\
     \signal{SIGABRT} &PA& C & Segnale di abort da \func{abort}.\\
-    \signal{SIGIOT}  &B & C & Trappola di I/O. Sinonimo di \signal{SIGABRT}.\\
+    \signald{SIGIOT}  &B & C & Trappola di I/O. Sinonimo di \signal{SIGABRT}.\\
     \signal{SIGBUS}  &BS& C & Errore sul bus (bad memory access).\\
     \signal{SIGFPE}  &AP& C & Errore aritmetico.\\
     \signal{SIGKILL} &P & T& Segnale di terminazione forzata.\\
@@ -373,7 +373,7 @@ esse sono definite nell'header di sistema \headfile{signal.h}.
     \signal{SIGSYS}  &VS& C & \textit{system call} sbagliata.\\
     \hline
     \signal{SIGSTKFLT}&?& T & Errore sullo stack del coprocessore (inusato).\\
-    \signal{SIGUNUSED}&?& C & Segnale inutilizzato (sinonimo di
+    \signald{SIGUNUSED}&?& C & Segnale inutilizzato (sinonimo di
                                \signal{SIGSYS}).\\
     \hline
     \signal{SIGCLD}  &V & I & Sinonimo di \signal{SIGCHLD}.\\
@@ -498,7 +498,7 @@ la registrazione su disco di un file di \textit{core dump}, che un debugger
 può usare per ricostruire lo stato del programma al momento della
 terminazione.  Questi segnali sono:
 \begin{basedescript}{\desclabelwidth{2.0cm}}
-\item[\signal{SIGFPE}] Riporta un errore aritmetico fatale. Benché il nome
+\item[\signald{SIGFPE}] Riporta un errore aritmetico fatale. Benché il nome
   derivi da \textit{floating point exception} si applica a tutti gli errori
   aritmetici compresa la divisione per zero e l'overflow.  Se il gestore
   ritorna il comportamento del processo è indefinito, ed ignorare questo
@@ -510,7 +510,7 @@ terminazione.  Questi segnali sono:
 %   aritmetiche e richiede che esse siano notificate.
 % TODO trovare altre info su SIGFPE e trattare la notifica delle eccezioni 
   
-\item[\signal{SIGILL}] Il nome deriva da \textit{illegal instruction},
+\item[\signald{SIGILL}] Il nome deriva da \textit{illegal instruction},
   significa che il programma sta cercando di eseguire una istruzione
   privilegiata o inesistente, in generale del codice illecito. Poiché il
   compilatore del C genera del codice valido si ottiene questo segnale se il
@@ -522,16 +522,16 @@ terminazione.  Questi segnali sono:
   problemi nell'esecuzione di un gestore.  Se il gestore ritorna il
   comportamento del processo è indefinito.
 
-\item[\signal{SIGSEGV}] Il nome deriva da \itindex{segment~violation}
-  \textit{segment violation}, e significa che il programma sta cercando di
-  leggere o scrivere in una zona di memoria protetta al di fuori di quella che
-  gli è stata riservata dal sistema. In genere è il meccanismo della
-  protezione della memoria che si accorge dell'errore ed il kernel genera il
-  segnale.  È tipico ottenere questo segnale dereferenziando un puntatore
-  nullo o non inizializzato leggendo al di là della fine di un vettore.  Se il
-  gestore ritorna il comportamento del processo è indefinito.
+\item[\signald{SIGSEGV}] Il nome deriva da \textit{segment violation}, e
+  significa che il programma sta cercando di leggere o scrivere in una zona di
+  memoria protetta al di fuori di quella che gli è stata riservata dal
+  sistema. In genere è il meccanismo della protezione della memoria che si
+  accorge dell'errore ed il kernel genera il segnale.  È tipico ottenere
+  questo segnale dereferenziando un puntatore nullo o non inizializzato
+  leggendo al di là della fine di un vettore.  Se il gestore ritorna il
+  comportamento del processo è indefinito.
 
-\item[\signal{SIGBUS}] Il nome deriva da \textit{bus error}. Come
+\item[\signald{SIGBUS}] Il nome deriva da \textit{bus error}. Come
   \signal{SIGSEGV} questo è un segnale che viene generato di solito quando si
   dereferenzia un puntatore non inizializzato, la differenza è che
   \signal{SIGSEGV} indica un accesso non permesso su un indirizzo esistente
@@ -539,19 +539,19 @@ terminazione.  Questi segnali sono:
   \signal{SIGBUS} indica l'accesso ad un indirizzo non valido, come nel caso
   di un puntatore non allineato.
 
-\item[\signal{SIGABRT}] Il nome deriva da \textit{abort}. Il segnale indica
+\item[\signald{SIGABRT}] Il nome deriva da \textit{abort}. Il segnale indica
   che il programma stesso ha rilevato un errore che viene riportato chiamando
   la funzione \func{abort}, che genera questo segnale.
 
-\item[\signal{SIGTRAP}] È il segnale generato da un'istruzione di breakpoint o
+\item[\signald{SIGTRAP}] È il segnale generato da un'istruzione di breakpoint o
   dall'attivazione del tracciamento per il processo. È usato dai programmi per
   il debugging e un programma normale non dovrebbe ricevere questo segnale.
 
-\item[\signal{SIGSYS}] Sta ad indicare che si è eseguita una istruzione che
+\item[\signald{SIGSYS}] Sta ad indicare che si è eseguita una istruzione che
   richiede l'esecuzione di una \textit{system call}, ma si è fornito un codice
   sbagliato per quest'ultima. 
 
-\item[\signal{SIGEMT}] Il nome sta per \textit{emulation trap}. Il segnale non
+\item[\signald{SIGEMT}] Il nome sta per \textit{emulation trap}. Il segnale non
   è previsto da nessuno standard ed è definito solo su alcune architetture che
   come il vecchio PDP11 prevedono questo tipo di interruzione, non è presente
   sui normali PC.
@@ -573,20 +573,20 @@ funzionamento (come il modo del terminale o le impostazioni di una qualche
 periferica). L'azione predefinita di questi segnali è di terminare il
 processo, questi segnali sono:
 \begin{basedescript}{\desclabelwidth{2.0cm}}
-\item[\signal{SIGTERM}] Il nome sta per \textit{terminate}. È un segnale
+\item[\signald{SIGTERM}] Il nome sta per \textit{terminate}. È un segnale
   generico usato per causare la conclusione di un programma. È quello che
   viene generato di default dal comando \cmd{kill}.  Al contrario di
   \signal{SIGKILL} può essere intercettato, ignorato, bloccato. In genere lo
   si usa per chiedere in maniera ``\textsl{educata}'' ad un processo di
   concludersi.
 
-\item[\signal{SIGINT}] Il nome sta per \textit{interrupt}. È il segnale di
+\item[\signald{SIGINT}] Il nome sta per \textit{interrupt}. È il segnale di
   interruzione per il programma. È quello che viene generato di default dal
   dall'invio sul terminale del carattere di controllo ``\textit{INTR}'',
   \textit{interrupt} appunto, che viene generato normalmente dalla sequenza
   \cmd{C-c} sulla tastiera.
 
-\item[\signal{SIGQUIT}] È analogo a \signal{SIGINT} con la differenza che è
+\item[\signald{SIGQUIT}] È analogo a \signal{SIGINT} con la differenza che è
   controllato da un altro carattere di controllo, ``\textit{QUIT}'',
   corrispondente alla sequenza \texttt{C-\bslash} sulla tastiera. A differenza
   del precedente l'azione predefinita, oltre alla terminazione del processo,
@@ -597,7 +597,7 @@ processo, questi segnali sono:
   (tipo la cancellazione di file temporanei), dato che in certi casi esse
   possono eliminare informazioni utili nell'esame dei \textit{core dump}.
 
-\item[\signal{SIGKILL}] Il nome è utilizzato per terminare in maniera immediata
+\item[\signald{SIGKILL}] Il nome è utilizzato per terminare in maniera immediata
   qualunque programma. Questo segnale non può essere né intercettato, né
   ignorato, né bloccato, per cui causa comunque la terminazione del processo.
   In genere esso viene generato solo per richiesta esplicita dell'utente dal
@@ -612,7 +612,7 @@ processo, questi segnali sono:
   per condizioni particolari il processo non può più essere eseguito neanche
   per eseguire un gestore.
 
-\item[\signal{SIGHUP}] Il nome sta per \textit{hang-up}. Segnala che il
+\item[\signald{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
   controllo di un terminale a tutti i processi della sessione (vedi
@@ -634,15 +634,15 @@ causare la terminazione del programma, ma con questi segnali la scelta
 predefinita è irrilevante, in quanto il loro uso presuppone sempre la
 necessità di un gestore.  Questi segnali sono:
 \begin{basedescript}{\desclabelwidth{2.0cm}}
-\item[\signal{SIGALRM}] Il nome sta per \textit{alarm}. Segnale la scadenza di
+\item[\signald{SIGALRM}] Il nome sta per \textit{alarm}. Segnale la scadenza di
   un timer misurato sul tempo reale o sull'orologio di sistema. È normalmente
   usato dalla funzione \func{alarm}.
 
-\item[\const{SIVGTALRM}] Il nome sta per \textit{virtual alarm}. È analogo al
+\item[\signald{SIVGTALRM}] Il nome sta per \textit{virtual alarm}. È analogo al
   precedente ma segnala la scadenza di un timer sul tempo di CPU usato dal
   processo. 
 
-\item[\signal{SIGPROF}] Il nome sta per \textit{profiling}. Indica la scadenza
+\item[\signald{SIGPROF}] Il nome sta per \textit{profiling}. Indica la scadenza
   di un timer che misura sia il tempo di CPU speso direttamente dal processo
   che quello che il sistema ha speso per conto di quest'ultimo. In genere
   viene usato dagli strumenti che servono a fare la profilazione dell'utilizzo
@@ -658,18 +658,18 @@ questo occorre comunque usare \func{fcntl} per abilitare un file descriptor a
 generare questi segnali.  L'azione predefinita è di essere ignorati. Questi
 segnali sono:
 \begin{basedescript}{\desclabelwidth{2.0cm}}
-\item[\signal{SIGIO}] Questo segnale viene inviato quando un file descriptor è
+\item[\signald{SIGIO}] Questo segnale viene inviato quando un file descriptor è
   pronto per eseguire dell'input/output. In molti sistemi solo i socket e i
   terminali possono generare questo segnale, in Linux questo può essere usato
   anche per i file, posto che la chiamata a \func{fcntl} che lo attiva abbia
   avuto successo.
 
-\item[\signal{SIGURG}] Questo segnale è inviato quando arrivano dei dati
+\item[\signald{SIGURG}] Questo segnale è inviato quando arrivano dei dati
   urgenti o \itindex{out-of-band} \textit{out-of-band} su di un
   socket; per maggiori dettagli al proposito si veda
   sez.~\ref{sec:TCP_urgent_data}.
 
-\item[\signal{SIGPOLL}] Questo segnale è definito nella standard POSIX.1-2001,
+\item[\signald{SIGPOLL}] Questo segnale è definito nella standard POSIX.1-2001,
   ed è equivalente a \signal{SIGIO} che invece deriva da BSD. Su Linux è
   definito per compatibilità con i sistemi System V.
 \end{basedescript}
@@ -682,15 +682,15 @@ Questi sono i segnali usati dal controllo delle sessioni e dei processi, il
 loro uso è specializzato e viene trattato in maniera specifica nelle sezioni
 in cui si trattano gli argomenti relativi.  Questi segnali sono:
 \begin{basedescript}{\desclabelwidth{2.0cm}}
-\item[\signal{SIGCHLD}] Questo è il segnale mandato al processo padre quando un
+\item[\signald{SIGCHLD}] Questo è il segnale mandato al processo padre quando un
   figlio termina o viene fermato. L'azione predefinita è di ignorare il
   segnale, la sua gestione è trattata in sez.~\ref{sec:proc_wait}.
 
-\item[\signal{SIGCLD}] Per Linux questo è solo un segnale identico al
+\item[\signald{SIGCLD}] Per Linux questo è solo un segnale identico al
   precedente e definito come sinonimo. Il nome è obsoleto, deriva dalla
   definizione del segnale su System V, ed oggi deve essere evitato.
 
-\item[\signal{SIGCONT}] Il nome sta per \textit{continue}. Il segnale viene
+\item[\signald{SIGCONT}] Il nome sta per \textit{continue}. Il segnale viene
   usato per fare ripartire un programma precedentemente fermato da
   \signal{SIGSTOP}. Questo segnale ha un comportamento speciale, e fa sempre
   ripartire il processo prima della sua consegna. Il comportamento predefinito
@@ -705,11 +705,11 @@ in cui si trattano gli argomenti relativi.  Questi segnali sono:
   se viene fermato e riavviato, come per esempio riscrivere un prompt, o
   inviare un avviso. 
 
-\item[\signal{SIGSTOP}] Il segnale ferma l'esecuzione di un processo, lo porta
+\item[\signald{SIGSTOP}] Il segnale ferma l'esecuzione di un processo, lo porta
   cioè nello stato \textit{stopped} (vedi sez.~\ref{sec:proc_sched}). Il
   segnale non può essere né intercettato, né ignorato, né bloccato.
 
-\item[\signal{SIGTSTP}] Il nome sta per \textit{interactive stop}. Il segnale
+\item[\signald{SIGTSTP}] Il nome sta per \textit{interactive stop}. Il segnale
   ferma il processo interattivamente, ed è generato dal carattere
   ``\textit{SUSP}'', prodotto dalla combinazione di tasti \cmd{C-z}, ed al
   contrario di \signal{SIGSTOP} può essere intercettato e ignorato. In genere
@@ -718,14 +718,14 @@ in cui si trattano gli argomenti relativi.  Questi segnali sono:
   esempio un programma ha disabilitato l'eco sul terminale può installare un
   gestore per riabilitarlo prima di fermarsi.
 
-\item[\signal{SIGTTIN}] Un processo non può leggere dal terminale se esegue
+\item[\signald{SIGTTIN}] Un processo non può leggere dal terminale se esegue
   una sessione di lavoro in \textit{background}. Quando un processo in
   \textit{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
   sez.~\ref{sec:sess_job_control_overview}.
 
-\item[\signal{SIGTTOU}] Segnale analogo al precedente \signal{SIGTTIN}, ma
+\item[\signald{SIGTTOU}] Segnale analogo al precedente \signal{SIGTTIN}, ma
   generato quando si tenta di scrivere sul terminale o modificarne uno dei
   modi con un processo in \textit{background}. L'azione predefinita è di
   fermare il processo, l'argomento è trattato in
@@ -742,7 +742,7 @@ che impediscono il completamento dell'esecuzione dovute all'interazione con il
 resto del sistema.  L'azione predefinita di questi segnali è normalmente
 quella di terminare il processo, questi segnali sono:
 \begin{basedescript}{\desclabelwidth{2.0cm}}
-\item[\signal{SIGPIPE}] Sta per \textit{Broken pipe}. Se si usano delle
+\item[\signald{SIGPIPE}] Sta per \textit{Broken pipe}. Se si usano delle
   \textit{pipe}, (o delle FIFO o dei socket) è necessario, prima che un
   processo inizi a scrivere su una di esse, che un altro l'abbia aperta in
   lettura (si veda sez.~\ref{sec:ipc_pipes}). Se il processo in lettura non è
@@ -751,21 +751,21 @@ quella di terminare il processo, questi segnali sono:
   ignorato la chiamata che lo ha causato fallisce, restituendo l'errore
   \errcode{EPIPE}.
 
-\item[\signal{SIGXCPU}] Sta per \textit{CPU time limit exceeded}. Questo
+\item[\signald{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 sez.~\ref{sec:sys_resource_limit}. Fino al
   kernel 2.2 terminava semplicemente il processo, a partire dal kernel 2.4,
   seguendo le indicazioni dello standard POSIX.1-2001 viene anche generato un
   \textit{core dump}.
 
-\item[\signal{SIGXFSZ}] Sta per \textit{File size limit exceeded}. Questo
+\item[\signald{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 sez.~\ref{sec:sys_resource_limit}.  Fino al kernel 2.2 terminava
   semplicemente il processo, a partire dal kernel 2.4, seguendo le indicazioni
   dello standard POSIX.1-2001 viene anche generato un \textit{core dump}.
 
-\item[\signal{SIGLOST}] Sta per \textit{Resource lost}. Tradizionalmente è il
+\item[\signald{SIGLOST}] Sta per \textit{Resource lost}. Tradizionalmente è il
   segnale che viene generato quando si perde un advisory lock su un file su
   NFS perché il server NFS è stato riavviato. Il progetto GNU lo utilizza per
   indicare ad un client il crollo inaspettato di un server. In Linux è
@@ -779,31 +779,31 @@ quella di terminare il processo, questi segnali sono:
 Raccogliamo qui infine una serie di segnali che hanno scopi differenti non
 classificabili in maniera omogenea. Questi segnali sono:
 \begin{basedescript}{\desclabelwidth{2.0cm}}
-\item[\signal{SIGUSR1}] Insieme a \signal{SIGUSR2} è un segnale a disposizione
+\item[\signald{SIGUSR1}] Insieme a \signal{SIGUSR2} è un segnale a disposizione
   dell'utente che lo può usare per quello che vuole. Viene generato solo
   attraverso l'invocazione della funzione \func{kill}. Entrambi i segnali
   possono essere utili per implementare una comunicazione elementare fra
   processi diversi, o per eseguire a richiesta una operazione utilizzando un
   gestore. L'azione predefinita è di terminare il processo.
-\item[\signal{SIGUSR2}] È il secondo segnale a disposizione degli utenti. Per
+\item[\signald{SIGUSR2}] È il secondo segnale a disposizione degli utenti. Per
   il suo utilizzo vale esattamente quanto appena detto per \signal{SIGUSR1}.
-\item[\signal{SIGWINCH}] Il nome sta per \textit{window (size) change} e viene
+\item[\signald{SIGWINCH}] Il nome sta per \textit{window (size) change} e viene
   generato in molti sistemi (GNU/Linux compreso) quando le dimensioni (in
   righe e colonne) di un terminale vengono cambiate. Viene usato da alcuni
   programmi testuali per riformattare l'uscita su schermo quando si cambia
   dimensione a quest'ultimo. L'azione predefinita è di essere ignorato.
-\item[\signal{SIGINFO}] Il segnale indica una richiesta di informazioni. È
+\item[\signald{SIGINFO}] Il segnale indica una richiesta di informazioni. È
   usato con il controllo di sessione, causa la stampa di informazioni da parte
   del processo leader del gruppo associato al terminale di controllo, gli
   altri processi lo ignorano. Su Linux però viene utilizzato come sinonimo di
   \signal{SIGPWR} e l'azione predefinita è di terminare il processo.
-\item[\signal{SIGPWR}] Il segnale indica un cambio nello stato di
+\item[\signald{SIGPWR}] Il segnale indica un cambio nello stato di
   alimentazione di un eventuale gruppo di continuità e viene usato
   principalmente per segnalare l'assenza ed il ritorno della corrente. Viene
   usato principalmente con \cmd{init} per attivare o fermare le procedure di
   spegnimento automatico all'esaurimento delle batterie. L'azione predefinita
   è di terminare il processo.
-\item[\signal{SIGSTKFLT}] Indica un errore nello stack del coprocessore
+\item[\signald{SIGSTKFLT}] Indica un errore nello stack del coprocessore
   matematico, è definito solo per le architetture PC, ma è completamente
   inusato. L'azione predefinita è di terminare il processo.
 \end{basedescript}
@@ -2148,7 +2148,10 @@ permette di usare un gestore più complesso, in grado di ricevere informazioni
 più dettagliate dal sistema, attraverso la struttura \struct{siginfo\_t},
 riportata in fig.~\ref{fig:sig_siginfo_t}.  I due campi devono essere usati in
 maniera alternativa, in certe implementazioni questi campi vengono addirittura
-definiti come una \direct{union}.
+definiti come una \direct{union}.\footnote{la direttiva \direct{union} del
+  linguaggio C definisce una variabile complessa, analoga a una stuttura, i
+  cui campi indicano i diversi tipi di valori che possono essere salvati, in
+  maniera alternativa, all'interno della stessa.}
 
 Installando un gestore di tipo \var{sa\_sigaction} diventa allora possibile
 accedere alle informazioni restituite attraverso il puntatore a questa
@@ -2188,7 +2191,7 @@ altre informazioni specifiche.
 \begin{table}[!htb]
   \footnotesize
   \centering
-  \begin{tabular}[c]{|l|p{8cm}|}
+  \begin{tabular}[c]{|l|p{10cm}|}
     \hline
     \textbf{Valore} & \textbf{Significato} \\
     \hline
@@ -2266,12 +2269,12 @@ riferimento.
     \const{TRAP\_BRKPT}  & Breakpoint sul processo.\\
     \const{TRAP\_TRACE}  & Trappola di tracciamento del processo.\\
     \hline
-    \const{CLD\_EXITED}  & Il figlio è uscito.\\
-    \const{CLD\_KILLED}  & Il figlio è stato terminato.\\
-    \const{CLD\_DUMPED}  & Il figlio è terminato in modo anormale.\\
-    \const{CLD\_TRAPPED} & Un figlio tracciato ha raggiunto una trappola.\\
-    \const{CLD\_STOPPED} & Il figlio è stato fermato.\\
-    \const{CLD\_CONTINUED}& Il figlio è ripartito.\\
+    \constd{CLD\_EXITED}  & Il figlio è uscito.\\
+    \constd{CLD\_KILLED}  & Il figlio è stato terminato.\\
+    \constd{CLD\_DUMPED}  & Il figlio è terminato in modo anormale.\\
+    \constd{CLD\_TRAPPED} & Un figlio tracciato ha raggiunto una trappola.\\
+    \constd{CLD\_STOPPED} & Il figlio è stato fermato.\\
+    \constd{CLD\_CONTINUED}& Il figlio è ripartito.\\
     \hline
     \const{POLL\_IN}   & Disponibili dati in ingresso.\\
     \const{POLL\_OUT}  & Spazio disponibile sul buffer di uscita.\\
@@ -2289,7 +2292,7 @@ riferimento.
 \end{table}
 
 Il resto della struttura \struct{siginfo\_t} è definito come una
-\direct{union} ed i valori eventualmente presenti dipendono dal segnale
+\dirct{union} ed i valori eventualmente presenti dipendono dal segnale
 ricevuto, così \signal{SIGCHLD} ed i segnali \textit{real-time} (vedi
 sez.~\ref{sec:sig_real_time}) inviati tramite \func{kill} avvalorano
 \var{si\_pid} e \var{si\_uid} coi valori corrispondenti al processo che ha
@@ -2344,7 +2347,7 @@ semplificare la definizione si è poi definito un apposito tipo
 gestore di segnale.
 
 Si noti come, essendo la funzione estremamente semplice, essa è definita come
-\direct{inline}. Questa direttiva viene usata per dire al compilatore di
+\dirct{inline}. Questa direttiva viene usata per dire al compilatore di
 trattare la funzione cui essa fa riferimento in maniera speciale inserendo il
 codice direttamente nel testo del programma.  Anche se i compilatori più
 moderni sono in grado di effettuare da soli queste manipolazioni (impostando
@@ -2547,7 +2550,7 @@ principale, cosa che ad esempio può rendere problematico chiamare all'interno
 di un gestore di segnali la stessa funzione che dal segnale è stata
 interrotta.
 
-\index{funzioni!sicure|(}
+\index{funzioni!\textit{signal safe}|(}
 
 Il concetto è comunque più generale e porta ad una distinzione fra quelle che
 POSIX chiama \textsl{funzioni insicure} (\textit{signal unsafe function}) e
@@ -2610,7 +2613,7 @@ fig.~\ref{fig:sig_safe_functions}.
   \label{fig:sig_safe_functions}
 \end{figure}
 
-\index{funzioni!sicure|)}
+\index{funzioni!\textit{signal safe}|)}
 
 Lo standard POSIX.1-2004 modifica la lista di
 fig.~\ref{fig:sig_safe_functions} aggiungendo le funzioni \func{\_Exit} e
@@ -2698,7 +2701,7 @@ Tutte queste nuove funzionalità eccetto l'ultima, che, come illustrato in
 sez.~\ref{sec:sig_sigaction}, è disponibile anche con i segnali ordinari, si
 applicano solo ai nuovi segnali \textit{real-time}; questi ultimi sono
 accessibili in un intervallo di valori specificati dalle due costanti
-\const{SIGRTMIN} e \const{SIGRTMAX}, che specificano il numero minimo e
+\constd{SIGRTMIN} e \constd{SIGRTMAX}, che specificano il numero minimo e
 massimo associato ad un segnale \textit{real-time}.
 
 Su Linux di solito il primo valore è 33, mentre il secondo è \code{\_NSIG-1},
@@ -2760,7 +2763,7 @@ mentre per la restituzione dei dati viene usato il campo \var{si\_value}.
 \end{figure}
 
 Detto campo, identificato con il tipo di dato \type{sigval\_t}, è una
-\direct{union} di tipo \struct{sigval} (la sua definizione è in
+\dirct{union} di tipo \struct{sigval} (la sua definizione è in
 fig.~\ref{fig:sig_sigval}) in cui può essere memorizzato o un valore numerico,
 se usata nella forma \var{sival\_int}, o un puntatore, se usata nella forma
 \var{sival\_ptr}. L'unione viene usata dai segnali \textit{real-time} e da
@@ -3340,7 +3343,7 @@ effettuata. Diventa così possibile indicare l'uso di un segnale o l'esecuzione
                              segnale è stato installato con
                              \const{SA\_SIGINFO} gli verrà restituito il
                              valore specificato con \var{sigev\_value} (una
-                             \direct{union} \texttt{sigval}, la cui definizione
+                             \dirct{union} \texttt{sigval}, la cui definizione
                              è in fig.~\ref{fig:sig_sigval}) come valore del
                              campo \var{si\_value} di \struct{siginfo\_t}.\\
     \const{SIGEV\_THREAD}  & La notifica viene effettuata creando un nuovo