Riordinamento completo degli indici. Create della macro ad hoc per la
[gapil.git] / session.tex
index 4118000e6f7018f49922d5c28cf0f297511eebbe..7f6a999f5ae011b6824208491328029237cb8e34 100644 (file)
@@ -1,9 +1,9 @@
 %% session.tex
 %%
 %% 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
 %% 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".
 %% 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".
@@ -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})
 
 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
 
 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
@@ -234,8 +234,8 @@ processo padre, per impostare il valore nel figlio, che da quest'ultimo, per
 sé stesso, in modo che il cambiamento di \textit{process group} sia immediato
 per entrambi; una delle due chiamate sarà ridondante, ma non potendo
 determinare quale dei due processi viene eseguito per primo, occorre eseguirle
 sé stesso, in modo che il cambiamento di \textit{process group} sia immediato
 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}. 
+comunque entrambe per evitare di esporsi ad una \textit{race
+  condition}\itindex{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
 
 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
 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
   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}.
 
   \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}
 ad un terminale con la funzione \funcd{tcgetpgrp}, il cui prototipo è:
 \begin{functions}
   \headdecl{unistd.h} \headdecl{termios.h}
@@ -394,13 +394,15 @@ corrispondenti segnali (rispettivamente \const{SIGTSTP}, \const{SIGINT},
 \const{SIGQUIT} e \const{SIGTERM}, trattati in sez.~\ref{sec:sig_job_control})
 a tutti i processi del raggruppamento di \textit{foreground}; in questo modo
 la shell può gestire il blocco e l'interruzione dei vari comandi.
 \const{SIGQUIT} e \const{SIGTERM}, trattati in sez.~\ref{sec:sig_job_control})
 a tutti i processi del raggruppamento di \textit{foreground}; in questo modo
 la shell può gestire il blocco e l'interruzione dei vari comandi.
+
+% \|
+
 Per completare la trattazione delle caratteristiche del job control legate al
 terminale di controllo, occorre prendere in considerazione i vari casi legati
 alla terminazione anomala dei processi, che sono di norma gestite attraverso
 il segnale \const{SIGHUP}. Il nome del segnale deriva da \textit{hungup},
 termine che viene usato per indicare la condizione in cui il terminale diventa
 Per completare la trattazione delle caratteristiche del job control legate al
 terminale di controllo, occorre prendere in considerazione i vari casi legati
 alla terminazione anomala dei processi, che sono di norma gestite attraverso
 il segnale \const{SIGHUP}. Il nome del segnale deriva da \textit{hungup},
 termine che viene usato per indicare la condizione in cui il terminale diventa
-inutilizzabile, (letteralmente sarebbe \textsl{impiccagione}). 
+inutilizzabile, (letteralmente sarebbe \textsl{impiccagione}).
 
 Quando si verifica questa condizione, ad esempio se si interrompe la linea, o
 va giù la rete o più semplicemente si chiude forzatamente la finestra di
 
 Quando si verifica questa condizione, ad esempio se si interrompe la linea, o
 va giù la rete o più semplicemente si chiude forzatamente la finestra di
@@ -549,7 +551,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
   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
 
 Se invece la password corrisponde \cmd{login} esegue \func{chdir} per settare
 la \textit{home directory} dell'utente, cambia i diritti di accesso al
@@ -557,7 +559,7 @@ terminale (con \func{chown} e \func{chmod}) per assegnarne la titolarit
 all'utente ed al suo gruppo principale, assegnandogli al contempo i diritti di
 lettura e scrittura. Inoltre il programma provvede a costruire gli opportuni
 valori per le variabili di ambiente, come \texttt{HOME}, \texttt{SHELL}, ecc.
 all'utente ed al suo gruppo principale, assegnandogli al contempo i diritti di
 lettura e scrittura. Inoltre il programma provvede a costruire gli opportuni
 valori per le variabili di ambiente, come \texttt{HOME}, \texttt{SHELL}, ecc.
-Infine attraverso l'uso di \func{setuid}, \func{setpid} e \func{initgroups}
+Infine attraverso l'uso di \func{setuid}, \func{setgid} e \func{initgroups}
 verrà cambiata l'identità del proprietario del processo, infatti, come
 spiegato in sez.~\ref{sec:proc_setuid}, avendo invocato tali funzioni con i
 privilegi di amministratore, tutti gli user-ID ed i group-ID (reali, effettivi
 verrà cambiata l'identità del proprietario del processo, infatti, come
 spiegato in sez.~\ref{sec:proc_setuid}, avendo invocato tali funzioni con i
 privilegi di amministratore, tutti gli user-ID ed i group-ID (reali, effettivi
@@ -964,7 +966,7 @@ bufferizzazione\footnote{completamente indipendente dalla eventuale ulteriore
 kernel.
 
 \begin{figure}[htb]
 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}
   \caption{Struttura interna generica di un driver per un terminale.}
   \label{fig:term_struct}
 \end{figure}
@@ -980,7 +982,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
 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
 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 +1037,13 @@ prototipo 
   Restituisce il nome del terminale di controllo del processo.
   
   \bodydesc{La funzione restituisce il puntatore alla stringa contenente il
   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}
 
 \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 \itindex{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
 \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 +1072,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.
 
 \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 \itindex{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
 
 I vari attributi vengono mantenuti per ciascun terminale in una struttura
 \struct{termios}, (la cui definizione è riportata in
@@ -1416,12 +1419,12 @@ fig.~\ref{fig:term_termios}).
     \const{TOSTOP} & Se abilitato, con il supporto per il job control presente,
                      genera il segnale \const{SIGTTOU} per un processo in
                      background che cerca di scrivere sul terminale.\\
     \const{TOSTOP} & Se abilitato, con il supporto per il job control presente,
                      genera il segnale \const{SIGTTOU} per un processo in
                      background che cerca di scrivere sul terminale.\\
-    \const{XCASE}  & Se settato il terminale funziona solo con le
+    \const{XCASE}  & Se impostato il terminale funziona solo con le
                      maiuscole. L'input è convertito in minuscole tranne per i
                      caratteri preceduti da una \verb|\|. In output le
                      maiuscole sono precedute da una \verb|\| e le minuscole
                      convertite in maiuscole.\\
                      maiuscole. L'input è convertito in minuscole tranne per i
                      caratteri preceduti da una \verb|\|. In output le
                      maiuscole sono precedute da una \verb|\| e le minuscole
                      convertite in maiuscole.\\
-    \const{DEFECHO}& Se impostate effettua l'eco solo se c'è un processo in
+    \const{DEFECHO}& Se impostato effettua l'eco solo se c'è un processo in
                      lettura.\\
     \const{FLUSHO} & Effettua la cancellazione della coda di uscita. Viene
                      attivato dal carattere DISCARD. Non è supportato in
                      lettura.\\
     \const{FLUSHO} & Effettua la cancellazione della coda di uscita. Viene
                      attivato dal carattere DISCARD. Non è supportato in
@@ -1765,7 +1768,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
 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 +1788,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,
 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
   processo chiamante.}
 
 Una prima funzione, che è efficace solo in caso di terminali seriali asincroni