X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=signal.tex;h=4463fb009b9298f7d39feeeecbcae03fd2131174;hp=bde6dfcedc1619d500a0a1e99b5f7cd015b7585e;hb=04a547df13e4c672d95e1060e1ada9ae2e1fcb2f;hpb=4d46f47e3a0e08440812b334f79489d92814e6d2 diff --git a/signal.tex b/signal.tex index bde6dfc..4463fb0 100644 --- a/signal.tex +++ b/signal.tex @@ -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