Aggiornamenti del copyright all'anno nuovo, e risistemazione delle
[gapil.git] / session.tex
index c8f25effcd2bea0f29b3a41fc3c895322efa968b..5427840c4de3c3711d8686198fb54cdc7a250486 100644 (file)
@@ -1,6 +1,6 @@
 %% session.tex
 %%
-%% Copyright (C) 2000-2005 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2007 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",
@@ -8,6 +8,7 @@
 %% license is included in the section entitled "GNU Free Documentation
 %% License".
 %%
+
 \chapter{Terminali e sessioni di lavoro}
 \label{cha:session}
 
@@ -32,11 +33,11 @@ Viene comunemente chiamato \textit{job control} quell'insieme di funzionalit
 il cui scopo è quello di permettere ad un utente di poter sfruttare le
 capacità multitasking di un sistema Unix per eseguire in contemporanea più
 processi, pur potendo accedere, di solito, ad un solo terminale,\footnote{con
-  X e con i terminali virtuali tutto questo non è più vero, dato che si può
-  accedere a molti terminali in contemporanea da una singola postazione di
-  lavoro, ma il sistema è nato prima dell'esistenza di tutto ciò.} avendo cioè
-un solo punto in cui si può avere accesso all'input ed all'output degli
-stessi.
+  \textit{X Window} e con i terminali virtuali tutto questo non è più vero,
+  dato che si può accedere a molti terminali in contemporanea da una singola
+  postazione di lavoro, ma il sistema è nato prima dell'esistenza di tutto
+  ciò.} avendo cioè un solo punto in cui si può avere accesso all'input ed
+all'output degli stessi.
 
 
 \subsection{Una panoramica introduttiva}
@@ -46,7 +47,7 @@ Il \textit{job control} 
 negli anni '80, e successivamente standardizzata da POSIX.1; la sua
 disponibilità nel sistema è verificabile attraverso il controllo della macro
 \macro{\_POSIX\_JOB\_CONTROL}. In generale il \textit{job control} richiede il
-supporto sia da parte della shell (quasi tutte ormai lo fanno), che da parte
+supporto sia da parte della shell (quasi tutte ormai lo hanno), che da parte
 del kernel; in particolare il kernel deve assicurare sia la presenza di un
 driver per i terminali abilitato al \textit{job control} che quella dei
 relativi segnali illustrati in sez.~\ref{sec:sig_job_control}. 
@@ -85,11 +86,11 @@ esso.
 In generale allora all'interno di una sessione avremo un eventuale (può non
 esserci) \itindex{process~group} \textit{process group} in
 \textit{foreground}, che riunisce i processi che possono accedere al
-terminale, e più \textit{process group} in \textit{background}, che non
-possono accedervi. Il job control prevede che quando un processo appartenente
-ad un raggruppamento in \textit{background} cerca di accedere al terminale,
-venga inviato un segnale a tutti i processi del raggruppamento, in modo da
-bloccarli (vedi sez.~\ref{sec:sess_ctrl_term}).
+terminale, e più \itindex{process~group} \textit{process group} in
+\textit{background}, che non possono accedervi. Il job control prevede che
+quando un processo appartenente ad un raggruppamento in \textit{background}
+cerca di accedere al terminale, venga inviato un segnale a tutti i processi
+del raggruppamento, in modo da bloccarli (vedi sez.~\ref{sec:sess_ctrl_term}).
 
 Un comportamento analogo si ha anche per i segnali generati dai comandi di
 tastiera inviati dal terminale che vengono inviati a tutti i processi del
@@ -182,7 +183,7 @@ stessa sessione del padre. Vedremo poi come sia possibile creare pi
 processi dall'uno all'altro, ma sempre all'interno di una stessa sessione.
 
 Ciascun raggruppamento di processi ha sempre un processo principale, il
-cosiddetto \itindex{process~group~leader}\textit{process group leader}, che è
+cosiddetto \itindex{process~group~leader} \textit{process group leader}, che è
 identificato dall'avere un \acr{pgid} uguale al suo \acr{pid}, in genere
 questo è il primo processo del raggruppamento, che si incarica di lanciare
 tutti gli altri. Un nuovo raggruppamento si crea con la funzione
@@ -238,8 +239,8 @@ sia dal 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 comunque entrambe per evitare di esporsi ad una \textit{race
-  condition}\itindex{race~condition}.
+occorre eseguirle comunque entrambe per evitare di esporsi ad una
+\itindex{race~condition} \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
@@ -394,8 +395,8 @@ disponendo pi
 decifrare, ma deve poi leggere la password dal terminale.
 
 Un'altra caratteristica del terminale di controllo usata nel job control è che
-utilizzando su di esso le combinazioni di tasti speciali (\cmd{C-z},
-\cmd{C-c}, \cmd{C-y} e \verb|C-\|) si farà sì che il kernel invii i
+utilizzando su di esso le combinazioni di tasti speciali (\texttt{C-z},
+\texttt{C-c}, \texttt{C-y} e \texttt{C-|}) si farà sì che il kernel invii i
 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
@@ -447,15 +448,15 @@ tutto ci
 controllo.  Consideriamo allora cosa avviene di norma nel \textit{job
   control}: una sessione viene creata con \func{setsid} che crea anche un
 nuovo \itindex{process~group} \textit{process group}: per definizione
-quest'ultimo è sempre \textsl{orfano}, dato che il padre del leader di
-sessione è fuori dalla stessa e il nuovo \textit{process group}
-\itindex{process~group} contiene solo il leader di sessione. Questo è un caso
-limite, e non viene emesso nessun segnale perché quanto previsto dallo
-standard riguarda solo i raggruppamenti che diventano orfani in seguito alla
-terminazione di un processo.\footnote{l'emissione dei segnali infatti avviene
-  solo nella fase di uscita del processo, come una delle operazioni legate
-  all'esecuzione di \func{\_exit}, secondo quanto illustrato in
-  sez.~\ref{sec:proc_termination}.}
+quest'ultimo è sempre \itindex{process~group~orphaned} \textsl{orfano}, dato
+che il padre del leader di sessione è fuori dalla stessa e il nuovo
+\textit{process group} \itindex{process~group} contiene solo il leader di
+sessione. Questo è un caso limite, e non viene emesso nessun segnale perché
+quanto previsto dallo standard riguarda solo i raggruppamenti che diventano
+orfani in seguito alla terminazione di un processo.\footnote{l'emissione dei
+  segnali infatti avviene solo nella fase di uscita del processo, come una
+  delle operazioni legate all'esecuzione di \func{\_exit}, secondo quanto
+  illustrato in sez.~\ref{sec:proc_termination}.}
 
 Il leader di sessione provvederà a creare nuovi raggruppamenti che a questo
 punto non sono orfani in quanto esso resta padre per almeno uno dei processi
@@ -534,13 +535,13 @@ amministratore e con un ambiente vuoto; \cmd{getty} si cura di chiamare
 \itindex{process~group} \textit{process group}, e di aprire il terminale (che
 così diventa il terminale di controllo della sessione) in lettura sullo
 standard input ed in scrittura sullo standard output e sullo standard error;
-inoltre effettuerà, qualora servano, ulteriori settaggi.\footnote{ad esempio,
-  come qualcuno si sarà accorto scrivendo un nome di login in maiuscolo, può
-  effettuare la conversione automatica dell'input in minuscolo, ponendosi in
-  una modalità speciale che non distingue fra i due tipi di caratteri (a
-  beneficio di alcuni vecchi terminali che non supportavano le minuscole).}
-Alla fine il programma stamperà un messaggio di benvenuto per poi porsi in
-attesa dell'immissione del nome di un utente.
+inoltre effettuerà, qualora servano, ulteriori impostazioni.\footnote{ad
+  esempio, come qualcuno si sarà accorto scrivendo un nome di login in
+  maiuscolo, può effettuare la conversione automatica dell'input in minuscolo,
+  ponendosi in una modalità speciale che non distingue fra i due tipi di
+  caratteri (a beneficio di alcuni vecchi terminali che non supportavano le
+  minuscole).}  Alla fine il programma stamperà un messaggio di benvenuto per
+poi porsi in attesa dell'immissione del nome di un utente.
 
 Una volta che si sia immesso il nome di login \cmd{getty} esegue direttamente
 il programma \cmd{login} con una \func{exevle}, passando come argomento la
@@ -692,14 +693,13 @@ standardizzata.
 Il servizio prevede vari meccanismi di notifica, e, come ogni altro servizio
 in un sistema unix-like, viene gestito attraverso un apposito programma,
 \cmd{syslogd}, che è anch'esso un \textsl{demone}. In generale i messaggi di
-errore vengono raccolti dal file speciale \file{/dev/log}, un
-\textit{socket}\index{socket} locale (vedi sez.~\ref{sec:sock_sa_local})
-dedicato a questo scopo, o via rete, con un \textit{socket} UDP, o da un
-apposito demone, \cmd{klogd}, che estrae i messaggi del kernel.\footnote{i
-  messaggi del kernel sono tenuti in un buffer circolare e scritti tramite la
-  funzione \func{printk}, analoga alla \func{printf} usata in user space; una
-  trattazione eccellente dell'argomento si trova in \cite{LinDevDri}, nel
-  quarto capitolo.}
+errore vengono raccolti dal file speciale \file{/dev/log}, un socket locale
+(vedi sez.~\ref{sec:sock_sa_local}) dedicato a questo scopo, o via rete, con
+un socket UDP, o da un apposito demone, \cmd{klogd}, che estrae i messaggi del
+kernel.\footnote{i messaggi del kernel sono tenuti in un buffer circolare e
+  scritti tramite la funzione \func{printk}, analoga alla \func{printf} usata
+  in user space; una trattazione eccellente dell'argomento si trova in
+  \cite{LinDevDri}, nel quarto capitolo.}
 
 Il servizio permette poi di trattare i vari messaggi classificandoli
 attraverso due indici; il primo, chiamato \textit{facility}, suddivide in
@@ -726,9 +726,9 @@ dettagli si possono trovare sulle pagine di manuale per questo file e per
 
 Le \acr{glibc} definiscono una serie di funzioni standard con cui un processo
 può accedere in maniera generica al servizio di \textit{syslog}, che però
-funzionano solo localmente; se si vogliono inviare i messaggi ad un'altro
-sistema occorre farlo esplicitamente con un socket\index{socket} UDP, o
-utilizzare le capacità di reinvio del servizio.
+funzionano solo localmente; se si vogliono inviare i messaggi ad un altro
+sistema occorre farlo esplicitamente con un socket UDP, o utilizzare le
+capacità di reinvio del servizio.
 
 La prima funzione definita dall'interfaccia è \funcd{openlog}, che apre una
 connessione al servizio di \textit{syslog}; essa in generale non è necessaria
@@ -885,7 +885,7 @@ Imposta la maschera dei log al valore specificato.
 \bodydesc{La funzione restituisce il precedente valore.}
 \end{prototype}
 
-Le routine di gestione mantengono per ogni processo una maschera che determina
+Le funzioni di gestione mantengono per ogni processo una maschera che determina
 quale delle chiamate effettuate a \func{syslog} verrà effettivamente
 registrata. La registrazione viene disabilitata per tutte quelle priorità che
 non rientrano nella maschera; questa viene impostata usando la macro
@@ -990,7 +990,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'altro 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
@@ -1048,7 +1048,7 @@ prototipo 
     \textit{pathname} del terminale.}
 \end{prototype}
 
-La funzione scrive il \itindex{pathname}\textit{pathname} del terminale di
+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
@@ -1082,7 +1082,7 @@ si avr
 
 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
+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.
@@ -1098,6 +1098,7 @@ ulteriori informazioni.\footnote{la definizione della struttura si trova in
   l'esempio di BSD, aggiunge i due campi \var{c\_ispeed} e \var{c\_ospeed} per
   mantenere le velocità delle linee seriali, ed un campo ulteriore,
   \var{c\_line} per ... (NdT, trovare a che serve).}
+% TODO trovare a che serve
 
 \begin{figure}[!htb] 
   \footnotesize \centering
@@ -1119,7 +1120,7 @@ modificare i bit su cui non si interviene.
 \begin{table}[b!ht]
   \footnotesize
   \centering
-  \begin{tabular}[c]{|l|p{11cm}|}
+  \begin{tabular}[c]{|l|p{10cm}|}
     \hline
     \textbf{Valore}& \textbf{Significato}\\
     \hline
@@ -1212,7 +1213,7 @@ pseudo-terminali usati nelle connessioni di rete.
 \begin{table}[htb]
   \footnotesize
   \centering
-  \begin{tabular}[c]{|l|p{11cm}|}
+  \begin{tabular}[c]{|l|p{10cm}|}
     \hline
     \textbf{Valore}& \textbf{Significato}\\
     \hline
@@ -1292,7 +1293,7 @@ valore.
 \begin{table}[htb]
   \footnotesize
   \centering
-  \begin{tabular}[c]{|l|p{11cm}|}
+  \begin{tabular}[c]{|l|p{10cm}|}
     \hline
     \textbf{Valore}& \textbf{Significato}\\
     \hline
@@ -1303,7 +1304,8 @@ valore.
                      \func{open} senza aver specificato il flag di
                      \const{O\_NOBLOCK} si bloccherà il processo finché 
                      non si è stabilita una connessione con il modem; inoltre 
-                     se viene rilevata una disconessione viene inviato un
+                     se viene rilevata una disconnessione viene inviato un
+                     segnale di
                      \const{SIGHUP} al processo di controllo del terminale. La
                      lettura su un terminale sconnesso comporta una condizione
                      di \textit{end of file} e la scrittura un errore di
@@ -1352,11 +1354,11 @@ valore.
 
 Il terzo flag, mantenuto nel campo \var{c\_cflag}, è detto \textsl{flag di
   controllo} ed è legato al funzionamento delle linee seriali, permettendo di
-impostarne varie caratteristiche, come il numero di bit di stop, i settaggi
-della parità, il funzionamento del controllo di flusso; esso ha senso solo per
-i terminali connessi a linee seriali. Un elenco dei vari bit, del loro
-significato e delle costanti utilizzate per identificarli è riportato in
-tab.~\ref{tab:sess_termios_cflag}.
+impostarne varie caratteristiche, come il numero di bit di stop, le
+impostazioni della parità, il funzionamento del controllo di flusso; esso ha
+senso solo per i terminali connessi a linee seriali. Un elenco dei vari bit,
+del loro significato e delle costanti utilizzate per identificarli è riportato
+in tab.~\ref{tab:sess_termios_cflag}.
 
 I valori di questo flag sono molto specifici, e completamente indirizzati al
 controllo di un terminale mantenuto su una linea seriale; essi pertanto non
@@ -1374,7 +1376,7 @@ fig.~\ref{fig:term_termios}).
 \begin{table}[b!ht]
   \footnotesize
   \centering
-  \begin{tabular}[c]{|l|p{11cm}|}
+  \begin{tabular}[c]{|l|p{10cm}|}
     \hline
     \textbf{Valore}& \textbf{Significato}\\
     \hline
@@ -1392,15 +1394,15 @@ fig.~\ref{fig:term_termios}).
     \const{ECHOPRT}& Se impostato abilita la visualizzazione del carattere di
                      cancellazione in una modalità adatta ai terminali con
                      l'uscita su stampante; l'invio del carattere di ERASE
-                     comporta la stampa di un \verb|\| seguito dal carattere
-                     cancellato, e così via in caso di successive
+                     comporta la stampa di un ``\texttt{|}'' seguito dal
+                     carattere cancellato, e così via in caso di successive
                      cancellazioni, quando si riprende ad immettere carattere 
-                     normali prima verrà stampata una \texttt{/}.\\
+                     normali prima verrà stampata una ``\texttt{/}''.\\
     \const{ECHOK}  & Se impostato abilita il trattamento della visualizzazione
                      del carattere KILL, andando a capo dopo aver visualizzato
                      lo stesso, altrimenti viene solo mostrato il carattere e
                      sta all'utente ricordare che l'input precedente è stato
-                     cancellato. \\
+                     cancellato.\\
     \const{ECHOKE} & Se impostato abilita il trattamento della visualizzazione
                      del carattere KILL cancellando i caratteri precedenti
                      nella linea secondo le modalità specificate dai valori di
@@ -1410,8 +1412,8 @@ fig.~\ref{fig:term_termios}).
                      \const{ECHO}. \\
     \const{ECHOCTL}& Se impostato insieme ad \const{ECHO} i caratteri di
                      controllo ASCII (tranne TAB, NL, START, e STOP) sono
-                     mostrati nella forma che prepende un \verb|^| alla
-                     lettera ottenuta sommando \texttt{0x40} al valore del
+                     mostrati nella forma che prepone un ``\texttt{\circonf}'' 
+                     alla lettera ottenuta sommando \texttt{0x40} al valore del
                      carattere (di solito questi si possono ottenere anche
                      direttamente premendo il tasto \texttt{ctrl} più la
                      relativa lettera).\\
@@ -1423,15 +1425,15 @@ fig.~\ref{fig:term_termios}).
                      essere interpretati. \\
     \const{NOFLSH} & Se impostato disabilita lo scarico delle code di ingresso
                      e uscita quando vengono emessi i segnali \const{SIGINT}, 
-                     \const{SIGQUIT} and \const{SIGSUSP}.\\
+                     \const{SIGQUIT} e \const{SIGSUSP}.\\
     \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 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.\\
+                     caratteri preceduti da una ``\texttt{\bslash}''. In output
+                     le maiuscole sono precedute da una ``\texttt{\bslash}'' e 
+                     le minuscole convertite in maiuscole.\\
     \const{DEFECHO}& Se impostato effettua l'eco solo se c'è un processo in
                      lettura.\\
     \const{FLUSHO} & Effettua la cancellazione della coda di uscita. Viene
@@ -1475,23 +1477,23 @@ altri.\footnote{in Linux il valore della costante 
 \begin{table}[htb]
   \footnotesize
   \centering
-  \begin{tabular}[c]{|l|c|c|p{8cm}|}
+  \begin{tabular}[c]{|l|c|c|p{7cm}|}
     \hline
     \textbf{Indice} & \textbf{Valore}&\textbf{Codice} & \textbf{Funzione}\\
     \hline
     \hline
-    \const{VINTR}   &\texttt{0x03}&(\verb|C-c|)& Carattere di interrupt, 
+    \const{VINTR} &\texttt{0x03}&(\texttt{C-c})& Carattere di interrupt, 
                                                  provoca l'emissione di 
                                                  \const{SIGINT}. \\
-    \const{VQUIT}   &\texttt{0x1C}&(\verb|C-\|)& Carattere di uscita provoca 
+    \const{VQUIT} &\texttt{0x1C}&(\texttt{C-|})& Carattere di uscita provoca 
                                                  l'emissione di 
                                                  \const{SIGQUIT}.\\
-    \const{VERASE}  &\texttt{0x7f}& DEL &  Carattere di ERASE, cancella
-                                           l'ultimo carattere precedente 
-                                           nella linea.\\
-    \const{VKILL}   &\texttt{0x15}&(\verb|C-u|)& Carattere di KILL, cancella
+    \const{VERASE}&\texttt{0x7f}&  DEL         & Carattere di ERASE, cancella
+                                                 l'ultimo carattere
+                                                 precedente nella linea.\\
+    \const{VKILL} &\texttt{0x15}&(\texttt{C-u})& Carattere di KILL, cancella
                                                  l'intera riga.\\
-    \const{VEOF}    &\texttt{0x04}&(\verb|C-d|)& Carattere di
+    \const{VEOF}  &\texttt{0x04}&(\texttt{C-d})& Carattere di
                                                  \textit{end-of-file}. Causa
                                                  l'invio del contenuto del
                                                  buffer di ingresso al
@@ -1503,38 +1505,39 @@ altri.\footnote{in Linux il valore della costante 
                                                  zero caratteri, cioè la
                                                  condizione di
                                                  \textit{end-of-file}.\\
-    \const{VTIME}   &   ---       & --- & Timeout, in decimi di secondo, per
-                                          una lettura in modo non canonico. \\
-    \const{VMIN}    &   ---       & --- & Numero minimo di caratteri per una 
-                                          lettura in modo non canonico.\\
-    \const{VSWTC}   &\texttt{0x00}& NUL & Carattere di switch. Non supportato
-                                          in Linux.\\
-    \const{VSTART}  &\texttt{0x21}&(\verb|C-q|)& Carattere di START. Riavvia un
+    \const{VTIME} &     ---     &  ---   & Timeout, in decimi di secondo, per
+                                           una lettura in modo non canonico.\\
+    \const{VMIN}  &     ---     &  ---   & Numero minimo di caratteri per una 
+                                           lettura in modo non canonico.\\
+    \const{VSWTC} &\texttt{0x00}&   NUL  & Carattere di switch. Non supportato
+                                           in Linux.\\
+    \const{VSTART}&\texttt{0x21}&(\texttt{C-q})& Carattere di START. Riavvia un
                                                  output bloccato da uno STOP.\\
-    \const{VSTOP}   &\texttt{0x23}&(\verb|C-s|)& Carattere di STOP. Blocca
+    \const{VSTOP} &\texttt{0x23}&(\texttt{C-s})& Carattere di STOP. Blocca
                                                  l'output fintanto che non
                                                  viene premuto un carattere di
                                                  START.\\
-    \const{VSUSP}   &\texttt{0x1A}&(\verb|C-z|)& Carattere di
+    \const{VSUSP} &\texttt{0x1A}&(\texttt{C-z})& Carattere di
                                                  sospensione. Invia il segnale
                                                  \const{SIGTSTP}.\\
-    \const{VEOL}    &\texttt{0x00}& NUL & Carattere di fine riga. Agisce come
-                                          un a capo, ma non viene scartato ed
-                                          è letto come l'ultimo carattere
-                                          nella riga.  \\
-    \const{VREPRINT}&\texttt{0x12}&(\verb|C-r|)& Ristampa i caratteri non
+    \const{VEOL}  &\texttt{0x00}& NUL &    Carattere di fine riga. Agisce come
+                                           un a capo, ma non viene scartato ed
+                                           è letto come l'ultimo carattere
+                                           nella riga.  \\
+    \const{VREPRINT}&\texttt{0x12}&(\texttt{C-r})& Ristampa i caratteri non
                                                  ancora letti.  \\
-    \const{VDISCARD}&\texttt{0x07}&(\verb|C-o|)& Non riconosciuto in Linux. \\
-    \const{VWERASE} &\texttt{0x17}&(\verb|C-w|)& Cancellazione di una parola.\\
-    \const{VLNEXT}  &\texttt{0x16}&(\verb|C-v|)& Carattere di escape, serve a
+    \const{VDISCARD}&\texttt{0x07}&(\texttt{C-o})& Non riconosciuto in Linux.\\
+    \const{VWERASE}&\texttt{0x17}&(\texttt{C-w})&Cancellazione di una
+                                                 parola.\\
+    \const{VLNEXT}&\texttt{0x16}&(\texttt{C-v})& Carattere di escape, serve a
                                                  quotare il carattere
                                                  successivo che non viene
                                                  interpretato ma passato
                                                  direttamente all'output. \\
-    \const{VEOL2}   &\texttt{0x00}& NUL & Ulteriore carattere di fine
-                                          riga. Ha lo stesso effetto di
-                                          \const{VEOL} ma può essere un
-                                          carattere diverso. \\
+    \const{VEOL2} &\texttt{0x00}&   NUL  & Ulteriore carattere di fine
+                                           riga. Ha lo stesso effetto di
+                                           \const{VEOL} ma può essere un
+                                           carattere diverso. \\
     \hline
   \end{tabular}
   \caption{Valori dei caratteri di controllo mantenuti nel campo \var{c\_cc}
@@ -1732,20 +1735,15 @@ altre versioni di librerie possono utilizzare dei valori diversi; per questo
 POSIX.1 prevede una serie di costanti che però servono solo per specificare le
 velocità tipiche delle linee seriali:
 \begin{verbatim}
-     B0       B50      B75      
-     B110     B134     B150
-     B200     B300     B600
-     B1200    B1800    B2400
-     B4800    B9600    B19200
-     B38400   B57600   B115200   
-     B230400  B460800
+     B0       B50      B75      B110     B134     B150     B200     
+     B300     B600     B1200    B1800    B2400    B4800    B9600    
+     B19200   B38400   B57600   B115200  B230400  B460800
 \end{verbatim}
 
 Un terminale può utilizzare solo alcune delle velocità possibili, le funzioni
 però non controllano se il valore specificato è valido, dato che non possono
 sapere a quale terminale le velocità saranno applicate; sarà l'esecuzione di
 \func{tcsetattr} a fallire quando si cercherà di eseguire l'impostazione.
-
 Di norma il valore ha senso solo per i terminali seriali dove indica appunto
 la velocità della linea di trasmissione; se questa non corrisponde a quella
 del terminale quest'ultimo non potrà funzionare: quando il terminale non è
@@ -2000,7 +1998,44 @@ Qui vanno spiegati i terminali virtuali, \file{/dev/pty} e compagnia.
 
 Qui vanno le cose su \func{openpty} e compagnia.
 
+
+% LocalWords:  kernel multitasking dell'I job control BSD POSIX shell sez group
+% LocalWords:  foreground process bg fg Di waitpid WUNTRACED pgrp session sched
+% LocalWords:  struct pgid sid pid ps getpgid getpgrp SVr unistd void errno int
+% LocalWords:  ESRCH getsid glibc system call XOPEN SOURCE EPERM setpgrp EACCES
+% LocalWords:  setpgid exec EINVAL did fork race condition setsid l'I tty ioctl
+% LocalWords:  NOCTTY TIOCSCTTY error tcsetpgrp termios fd pgrpid descriptor VT
+% LocalWords:  ENOTTY ENOSYS EBADF SIGTTIN SIGTTOU EIO tcgetpgrp crypt SIGTSTP
+% LocalWords:  SIGINT SIGQUIT SIGTERM SIGHUP hungup kill orphaned SIGCONT exit
+% LocalWords:  init Slackware run level inittab fig device getty exevle TERM at
+% LocalWords:  getpwnam chdir home chown chmod setuid setgid initgroups SIGCHLD
+% LocalWords:  daemon like daemons NdT Stevens Programming FAQ filesystem umask
+% LocalWords:  noclose syslog syslogd socket UDP klogd printk printf facility
+% LocalWords:  priority log openlog const char ident option argv tab AUTH CRON
+% LocalWords:  AUTHPRIV cron FTP KERN LOCAL LPR NEWS news USENET UUCP CONS CRIT
+% LocalWords:  NDELAY NOWAIT ODELAY PERROR stderr format strerror EMERG ALERT
+% LocalWords:  ERR WARNING NOTICE INFO DEBUG debug setlogmask mask UPTO za ssh
+% LocalWords:  teletype telnet read write BELL beep CANON isatty desc ttyname
+% LocalWords:  NULL ctermid stdio pathname buff size len ERANGE bits ispeed xFF
+% LocalWords:  ospeed line tcflag INPCK IGNPAR PARMRK ISTRIP IGNBRK BREAK NUL
+% LocalWords:  BRKINT IGNCR carriage return newline ICRNL INLCR IUCLC IXON NL
+% LocalWords:  IXANY IXOFF IMAXBEL iflag OPOST CR OCRNL OLCUC ONLCR ONOCR OFILL
+% LocalWords:  ONLRET OFDEL NLDLY CRDLY TABDLY BSDLY backspace BS VTDLY FFDLY
+% LocalWords:  form feed FF oflag CLOCAL NOBLOCK of HUPCL CREAD CSTOPB PARENB
+% LocalWords:  PARODD CSIZE CS CBAUD CBAUDEX CIBAUD CRTSCTS RTS CTS cflag ECHO
+% LocalWords:  ICANON ECHOE ERASE ECHOPRT ECHOK ECHOKE ECHONL ECHOCTL ctrl ISIG
+% LocalWords:  INTR QUIT SUSP IEXTEN EOL LNEXT REPRINT WERASE NOFLSH and TOSTOP
+% LocalWords:  SIGSUSP XCASE DEFECHO FLUSHO DISCARD PENDIN lflag NCCS VINTR EOF
+% LocalWords:  interrupt VQUIT VERASE VKILL VEOF VTIME VMIN VSWTC switch VSTART
+% LocalWords:  VSTOP VSUSP VEOL VREPRINT VDISCARD VWERASE VLNEXT escape actions
+% LocalWords:  tcgetattr tcsetattr EINTR TCSANOW TCSADRAIN TCSAFLUSH speed MIN
+% LocalWords:  SetTermAttr UnSetTermAttr cfsetispeed cfsetospeed cfgetispeed
+% LocalWords:  cfgetospeed quest'ultime tcsendbreak duration break tcdrain
+% LocalWords:  tcflush queue TCIFLUSH TCOFLUSH TCIOFLUSH tcflow action TCOOFF
+% LocalWords:  TCOON TCIOFF TCION timer openpty Window nochdir
+
+
 %%% Local Variables: 
 %%% mode: latex
 %%% TeX-master: "gapil"
-%%% End: 
+%%% End: 
\ No newline at end of file