%% session.tex
%%
-%% Copyright (C) 2000-2004 Simone Piccardi. Permission is granted to
+%% Copyright (C) 2000-2005 Simone Piccardi. Permission is granted to
%% copy, distribute and/or modify this document under the terms of the GNU Free
%% Documentation License, Version 1.1 or any later version published by the
-%% Free Software Foundation; with the Invariant Sections being "Prefazione",
+%% Free Software Foundation; with the Invariant Sections being "Un preambolo",
%% with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the
%% license is included in the section entitled "GNU Free Documentation
%% License".
per entrambi; una delle due chiamate sarà ridondante, ma non potendo
determinare quale dei due processi viene eseguito per primo, occorre eseguirle
comunque entrambe per evitare di esporsi ad una race
-condition\index{race condition}.
+condition\index{\textit{race~condition}}.
Si noti come nessuna delle funzioni esaminate finora permetta di spostare un
processo da una sessione ad un altra; infatti l'unico modo di far cambiare
A tale scopo lo standard POSIX.1 prevede che ad ogni sessione possa essere
associato un terminale di controllo; in Linux questo viene realizzato
-mantenendo fra gli attributi di ciascun processo anche qual'è il suo terminale
+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
\struct{task\_struct}, nel campo \var{tty}.} In generale ogni processo
\func{waitpid}.} Se però si bloccano o ignorano i due segnali citati, le
funzioni di lettura e scrittura falliranno con un errore di \errcode{EIO}.
-Un processo può controllare qual'è il gruppo di \textit{foreground} associato
+Un processo può controllare qual è il gruppo di \textit{foreground} associato
ad un terminale con la funzione \funcd{tcgetpgrp}, il cui prototipo è:
\begin{functions}
\headdecl{unistd.h} \headdecl{termios.h}
kernel.
\begin{figure}[htb]
- \centering \includegraphics[width=13cm]{img/term_struct}
+ \centering \includegraphics[width=14.5cm]{img/term_struct}
\caption{Struttura interna generica di un driver per un terminale.}
\label{fig:term_struct}
\end{figure}
automaticamente un avviso (un carattere di BELL, che provoca un beep)
sull'output quando si eccedono le dimensioni della coda. Se è abilitato il
modo canonico i caratteri in ingresso restano nella coda fintanto che non
-viene ricevuto un a capo; un'altra parametro del sistema, \const{MAX\_CANON},
+viene ricevuto un a capo; un'altro parametro del sistema, \const{MAX\_CANON},
specifica la dimensione massima di una riga in modo canonico.
La coda di uscita è analoga a quella di ingresso e contiene i caratteri
Restituisce il nome del terminale di controllo del processo.
\bodydesc{La funzione restituisce il puntatore alla stringa contenente il
- pathname del terminale.}
+ \textit{pathname} del terminale.}
\end{prototype}
-La funzione scrive il pathname del terminale di controllo del processo
-chiamante nella stringa posta all'indirizzo specificato dall'argomento
-\param{s}. La memoria per contenere la stringa deve essere stata allocata in
-precedenza ed essere lunga almeno
+La funzione scrive il \index{\textit{pathname}}\textit{pathname} del terminale
+di controllo del processo chiamante nella stringa posta all'indirizzo
+specificato dall'argomento \param{s}. La memoria per contenere la stringa
+deve essere stata allocata in precedenza ed essere lunga almeno
\const{L\_ctermid}\footnote{\const{L\_ctermid} è una delle varie costanti del
sistema, non trattata esplicitamente in sez.~\ref{sec:sys_characteristics}
che indica la dimensione che deve avere una stringa per poter contenere il
\param{len}; se la stringa che deve essere restituita eccede questa dimensione
si avrà una condizione di errore.
-Se si passa come argomento \val{NULL} la funzione restituisce il puntatore
-ad una stringa statica che può essere sovrascritta da chiamate successive. Si
-tenga presente che il pathname restituito potrebbe non identificare
-univocamente il terminale (ad esempio potrebbe essere \file{/dev/tty}),
-inoltre non è detto che il processo possa effettivamente aprire il terminale.
+Se si passa come argomento \val{NULL} la funzione restituisce il puntatore ad
+una stringa statica che può essere sovrascritta da chiamate successive. Si
+tenga presente che il \index{\textit{pathname}}\textit{pathname} restituito
+potrebbe non identificare univocamente il terminale (ad esempio potrebbe
+essere \file{/dev/tty}), inoltre non è detto che il processo possa
+effettivamente aprire il terminale.
I vari attributi vengono mantenuti per ciascun terminale in una struttura
\struct{termios}, (la cui definizione è riportata in