\textit{process group} di cui esso diventa leader (come per i \textit{process
group} un processo si dice leader di sessione\footnote{in Linux la proprietà
è mantenuta in maniera indipendente con un apposito campo \var{leader} in
- \var{task\_struct}.} se il suo \acr{sid} è uguale al suo \acr{pid}).
-Infine la funzione distacca il processo da ogni terminale di controllo
-(torneremo sull'argomento in \secref{sec:sess_ctrl_term}) cui fosse in
-precedenza associato.
+ \var{task\_struct}.} se il suo \acr{sid} è uguale al suo \acr{pid}) ed unico
+componente. Inoltre la funzione distacca il processo da ogni terminale di
+controllo (torneremo sull'argomento in \secref{sec:sess_ctrl_term}) cui fosse
+in precedenza associato.
La funzione ha successo soltanto se il processo non è già leader di un
\textit{process group}, per cui per usarla di norma si esegue una \func{fork}
-\subsection{Il terminale di controllo}
+\subsection{Il terminale di controllo e il controllo di sessione}
\label{sec:sess_ctrl_term}
Come accennato in \secref{sec:sess_job_control_overview}, nel sistema del
dal quale ricevono gli eventuali segnali da tastiera.
A tale scopo lo standard POSIX.1 prevede che ad ogni sessione possa essere
-associato un terminale di controllo (e non più di uno); in Linux questo viene
-realizzato mantenendo fra gli attributi di ciascun processo anche il terminale
+associato un terminale di controllo; in Linux questo viene realizzato
+mantenendo fra gli attributi di ciascun processo anche qual'è il suo terminale
di controllo. \footnote{Lo standard POSIX.1 non specifica nulla riguardo
l'implementazione; in Linux anch'esso viene mantenuto nella solita struttura
- \var{task\_struct}, nel campo \var{tty}.}
-In generale ogni processo eredita dal padre, insieme al \acr{pgid} e al
-\acr{sid} anche il terminale di controllo. In questo modo tutti processi
-originati dallo stesso leader di sessione mantengono lo stesso terminale di
-controllo.
+ \var{task\_struct}, nel campo \var{tty}.} In generale ogni processo eredita
+dal padre, insieme al \acr{pgid} e al \acr{sid} anche il terminale di
+controllo. In questo modo tutti processi originati dallo stesso leader di
+sessione mantengono lo stesso terminale di controllo.
Alla creazione di una nuova sessione con \func{setsid} ogni associazione con
il precedente terminale di controllo viene cancellata, ed il processo che è
divenuto un nuovo leader di sessione dovrà riottenere (qualora sia necessario,
-cosa che come vedremo in \secref{sec:sess_daemon} non è sempre vera), un
+cosa che, come vedremo in \secref{sec:sess_daemon}, non è sempre vera), un
terminale di controllo. In generale questo viene fatto automaticamente dal
sistema quando il leader di sessione apre il suo primo terminale\footnote{a
meno di non avere richiesto esplicitamente che questo non diventi un
\secref{sec:file_open}). In questo Linux segue la semantica di SVr4; BSD
invece richiede che il terminale venga allocato esplicitamente con una
\func{ioctl} con il comando \macro{TIOCSCTTY}.} che diventa automaticamente
-il terminale di controllo.
+il terminale di controllo.
+Per ciascuna sessione di lavoro avremo allora un terminale di controllo, ed un
+processo di \textit{foreground}, che è quello
+Il kernel identifica
\subsection{Dal login alla shell}
\label{sec:sess_login}