sessione.
Oltre al \acr{pid} e al \acr{ppid}, (e a quelli che vedremo in
-\secref{sec:sess_xxx}, relativi al controllo di sessione), ad ogni processo
-vengono associati degli altri identificatori che vengono usati per il
+\secref{sec:sess_proc_group}, relativi al controllo di sessione), ad ogni
+processo vengono associati degli altri identificatori che vengono usati per il
controllo di accesso. Questi servono per determinare se un processo può
eseguire o meno le operazioni richieste, a seconda dei privilegi e
dell'identità di chi lo ha posto in esecuzione; l'argomento è complesso e sarà
\secref{sec:proc_access_id}).
\item gli identificatori per il controllo di sessione: il \textit{process
groupid} e il \textit{session id} ed il terminale di controllo (vedi
- \secref{sec:sess_xxx} e \secref{sec:sess_xxx}).
+ \secref{sec:sess_proc_group}).
\item la directory di lavoro e la directory radice (vedi
\secref{sec:file_work_dir} e \secref{sec:file_chroot}).
\item la maschera dei permessi di creazione (vedi \secref{sec:file_umask}).
Per questo motivo lo standard POSIX.1 ha introdotto la funzione \func{waitpid}
che effettua lo stesso servizio, ma dispone di una serie di funzionalità più
-ampie, legate anche al controllo di sessione. Dato che è possibile ottenere
-lo stesso comportamento di \func{wait} si consiglia di utilizzare sempre
-questa funzione, il cui prototipo è:
+ampie, legate anche al controllo di sessione (si veda
+\ref{sec:sess_job_control}). Dato che è possibile ottenere lo stesso
+comportamento di \func{wait} si consiglia di utilizzare sempre questa
+funzione, il cui prototipo è:
\begin{functions}
\headdecl{sys/types.h}
\headdecl{sys/wait.h}
possibilità si specificare un'opzione \macro{WNOHANG} che ne previene il
blocco; inoltre \func{waitpid} può specificare quale processo attendere sulla
base del valore fornito dall'argomento \param{pid}, secondo lo
-specchietto riportato in \ntab:
+specchietto riportato in \tabref{tab:proc_waidpid_pid}:
\begin{table}[!htb]
\centering
\footnotesize
\textbf{Valore} & \textbf{Macro} &\textbf{Significato}\\
\hline
\hline
- $<-1$& -- & attende per un figlio il cui \textit{process group} è uguale al
+ $<-1$& -- & attende per un figlio il cui \textit{process group} (vedi
+ \ref{sec:sess_proc_group}) è uguale al
valore assoluto di \var{pid}. \\
$-1$ & \macro{WAIT\_ANY} & attende per un figlio qualsiasi, usata in
questa maniera è equivalente a \func{wait}.\\
delle opportune opzioni tramite l'argomento \param{option}. I valori possibili
sono il già citato \macro{WNOHANG}, che previene il blocco della funzione
quando il processo figlio non è terminato, e \macro{WUNTRACED} (usata per il
-controllo di sessione, trattato in \capref{cha:session}) che fa ritornare la
-funzione anche per i processi figli che sono bloccati ed il cui stato non è
-stato ancora riportato al padre. Il valore dell'opzione deve essere
-specificato come maschera binaria ottenuta con l'OR delle suddette costanti
-con zero.
+controllo di sessione, trattato in \secref{sec:sess_job_control}) che fa
+ritornare la funzione anche per i processi figli che sono bloccati ed il cui
+stato non è stato ancora riportato al padre. Il valore dell'opzione deve
+essere specificato come maschera binaria ottenuta con l'OR delle suddette
+costanti con zero.
La terminazione di un processo figlio è chiaramente un evento asincrono
rispetto all'esecuzione di un programma e può avvenire in un qualunque
(\acr{ppid}).
\item l'\textsl{userid reale}, il \textit{groupid reale} ed i \textsl{groupid
supplementari} (vedi \secref{sec:proc_access_id}).
-\item il \textit{session id} ed il \textit{process groupid} (vedi
- \secref{sec:sess_xxx}).
+\item il \textit{session id} (\acr{sid}) ed il \textit{process groupid}
+ (\acr{pgid}), vedi \secref{sec:sess_proc_group}.
\item il terminale di controllo (vedi \secref{sec:sess_xxx}).
\item il tempo restante ad un allarme (vedi \secref{sec:sig_alarm_abort}).
\item la directory radice e la directory di lavoro corrente (vedi
condivisa. In questi casi, se non si dispone della possibilità di eseguire
atomicamente le operazioni necessarie, occorre che quelle parti di codice in
cui si compiono le operazioni sulle risorse condivise (le cosiddette
-\textsl{sezioni critiche}) del programma, siano opportunamente protette da
-meccanismi di sincronizzazione (torneremo su queste problematiche di questo
-tipo in \capref{cha:IPC}).
+\textsl{sezioni critiche}\index{sezioni critiche}) del programma, siano
+opportunamente protette da meccanismi di sincronizzazione (torneremo su queste
+problematiche di questo tipo in \capref{cha:IPC}).
Un caso particolare di \textit{race condition} sono poi i cosiddetti
\textit{deadlock}, particolarmente gravi in quanto comportano spesso il blocco