Varie correzioni da Fabio Rossi, e relative aggiunte nei ringrazimenti per
[gapil.git] / session.tex
index d6438edaf8011d400446abc6e59478f3954f2324..b3ce7d0ecc05abef9243b527feac7f2f2fcb5ba4 100644 (file)
@@ -1,6 +1,6 @@
 %% 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 "Un preambolo",
@@ -60,11 +60,11 @@ sez.~\ref{sec:sess_login}).
 
 Siccome la shell è collegata ad un solo terminale, che viene usualmente
 chiamato \textsl{terminale di controllo}, (vedi sez.~\ref{sec:sess_ctrl_term})
-un solo comando alla volta (quello che viene detto in \textit{foreground}),
-potrà scrivere e leggere dal terminale. La shell però può eseguire anche più
-comandi in contemporanea, mandandoli in \textit{background} (aggiungendo una
-\cmd{\&} alla fine del comando), nel qual caso essi saranno eseguiti senza
-essere collegati al terminale.
+un solo comando alla volta (quello che viene detto in \textit{foreground} o in
+\textsl{primo piano}), potrà scrivere e leggere dal terminale. La shell però
+può eseguire, aggiungendo una \cmd{\&} alla fine del comando, più programmi in
+contemporanea, mandandoli in \textit{background} (o \textsl{sullo sfondo}),
+nel qual caso essi saranno eseguiti senza essere collegati al terminale.
 
 Si noti come si sia parlato di comandi e non di programmi o processi; fra le
 funzionalità della shell infatti c'è anche quella di consentire di concatenare
@@ -235,7 +235,7 @@ s
 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
@@ -292,7 +292,7 @@ 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; 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
+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
 eredita dal padre, insieme al \acr{pgid} e al \acr{sid} anche il terminale di
@@ -358,7 +358,7 @@ condizioni di errore.\footnote{la shell in genere notifica comunque un
   \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}
@@ -549,7 +549,7 @@ o se la password non corrisponde\footnote{il confronto non viene effettuato
   volta criptato, ed è il risultato che viene confrontato con il valore che
   viene mantenuto nel database degli utenti.} la richiesta viene ripetuta un
 certo numero di volte dopo di che \cmd{login} esce ed \cmd{init} provvede a
-rilanciare un'altra istanza di \func{getty}.
+rilanciare un'altra istanza di \cmd{getty}.
 
 Se invece la password corrisponde \cmd{login} esegue \func{chdir} per settare
 la \textit{home directory} dell'utente, cambia i diritti di accesso al
@@ -964,7 +964,7 @@ bufferizzazione\footnote{completamente indipendente dalla eventuale ulteriore
 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}
@@ -980,7 +980,7 @@ massime vengono persi; in alcuni casi il driver provvede ad inviare
 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
@@ -1035,13 +1035,13 @@ prototipo 
   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
@@ -1070,11 +1070,12 @@ ovviamente essere stata allocata in precedenza), e la relativa dimensione,
 \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
@@ -1765,7 +1766,7 @@ lette da una struttura \struct{termios} utilizzando altre due funzioni,
 Anche in questo caso le due funzioni estraggono i valori della velocità della
 linea da una struttura, il cui indirizzo è specificato dall'argomento
 \param{termios\_p} che deve essere stata letta in precedenza con
-\func{tcgetaddr}.
+\func{tcgetattr}.
 
 
 
@@ -1785,7 +1786,7 @@ vengono considerate, dal punto di vista dell'accesso al terminale, come delle
 funzioni di scrittura, pertanto se usate da processi in background sul loro
 terminale di controllo provocano l'emissione di \const{SIGTTOU} come
 illustrato in sez.~\ref{sec:sess_ctrl_term}.\footnote{con la stessa eccezione,
-  già vista per \func{tcsetaddr}, che quest'ultimo sia bloccato o ignorato dal
+  già vista per \func{tcsetattr}, che quest'ultimo sia bloccato o ignorato dal
   processo chiamante.}
 
 Una prima funzione, che è efficace solo in caso di terminali seriali asincroni