X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=session.tex;h=2d1b69e1866d43e0e06b51fb529e30764252d5ad;hp=0cb02ef4de4ddb3bf48289912d0a2f5d3e28a136;hb=94b4d603807121b40eef06d22d2b6cd6e06ec7fd;hpb=4e1da5b259a86278710be32441de7b88b9287ec1 diff --git a/session.tex b/session.tex index 0cb02ef..2d1b69e 100644 --- a/session.tex +++ b/session.tex @@ -377,7 +377,7 @@ Come accennato in sez.~\ref{sec:sess_job_control_overview}, tutti i processi (e relativi raggruppamenti) che non fanno parte del gruppo di \textit{foreground} sono detti in \textit{background}; se uno si essi cerca di accedere al terminale di controllo provocherà l'invio da parte del kernel di -uno dei due segnali \const{SIGTTIN} o \const{SIGTTOU} (a seconda che l'accesso +uno dei due segnali \signal{SIGTTIN} o \signal{SIGTTOU} (a seconda che l'accesso sia stato in lettura o scrittura) a tutto il suo \itindex{process~group} \textit{process group}; dato che il comportamento di default di questi segnali (si riveda quanto esposto in sez.~\ref{sec:sig_job_control}) è di fermare il @@ -420,8 +420,8 @@ 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 (\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}) +corrispondenti segnali (rispettivamente \signal{SIGTSTP}, \signal{SIGINT}, +\signal{SIGQUIT} e \signal{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. @@ -429,14 +429,14 @@ 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}, +il segnale \signal{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}). 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 terminale su cui si stava lavorando, il kernel provvederà ad inviare il -segnale di \const{SIGHUP} al processo di controllo. L'azione preimpostata in +segnale di \signal{SIGHUP} al processo di controllo. L'azione preimpostata in questo caso è la terminazione del processo, il problema che si pone è cosa accade agli altri processi nella sessione, che non han più un processo di controllo che possa gestire l'accesso al terminale, che potrebbe essere @@ -445,7 +445,7 @@ riutilizzato per qualche altra sessione. Lo standard POSIX.1 prevede che quando il processo di controllo termina, che ciò avvenga o meno per un \textit{hungup} del terminale (ad esempio si potrebbe terminare direttamente la shell con \cmd{kill}) venga inviato un -segnale di \const{SIGHUP} ai processi del raggruppamento di foreground. In +segnale di \signal{SIGHUP} ai processi del raggruppamento di foreground. In questo modo essi potranno essere avvisati che non esiste più un processo in grado di gestire il terminale (di norma tutto ciò comporta la terminazione anche di questi ultimi). @@ -464,7 +464,7 @@ cui processi hanno come padri esclusivamente o altri processi nel raggruppamento, o processi fuori della sessione. Lo standard prevede inoltre che se la terminazione di un processo fa sì che un raggruppamento di processi diventi orfano e se i suoi membri sono bloccati, ad essi vengano inviati in -sequenza i segnali di \const{SIGHUP} e \const{SIGCONT}. +sequenza i segnali di \signal{SIGHUP} e \signal{SIGCONT}. La definizione può sembrare complicata, e a prima vista non è chiaro cosa tutto ciò abbia a che fare con il problema della terminazione del processo di @@ -490,8 +490,8 @@ sez.~\ref{sec:proc_termination}, tutti i suoi figli vengono adottati da group creati direttamente dal leader di sessione (a meno di non aver spostato con \func{setpgid} un processo da un gruppo ad un altro, cosa che di norma non viene fatta) i quali riceveranno, nel caso siano bloccati, i due segnali; -\const{SIGCONT} ne farà proseguire l'esecuzione, ed essendo stato nel -frattempo inviato anche \const{SIGHUP}, se non c'è un gestore per +\signal{SIGCONT} ne farà proseguire l'esecuzione, ed essendo stato nel +frattempo inviato anche \signal{SIGHUP}, se non c'è un gestore per quest'ultimo, i processi bloccati verranno automaticamente terminati. @@ -601,8 +601,8 @@ 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{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 e salvati) saranno impostati a quelli +invocato tali funzioni con i privilegi di amministratore, tutti gli \acr{uid} +ed i \acr{gid} (reali, effettivi e salvati) saranno impostati a quelli dell'utente. A questo punto \cmd{login} provvederà (fatte salve eventuali altre azioni @@ -614,7 +614,7 @@ controllo per il terminale, a gestire l'esecuzione dei comandi come illustrato in sez.~\ref{sec:sess_job_control_overview}. Dato che il processo padre resta sempre \cmd{init} quest'ultimo potrà -provvedere, ricevendo un \const{SIGCHLD} all'uscita della shell quando la +provvedere, ricevendo un \signal{SIGCHLD} all'uscita della shell quando la sessione di lavoro è terminata, a rilanciare \cmd{getty} sul terminale per ripetere da capo tutto il procedimento. @@ -922,7 +922,7 @@ Una funzione sostanzialmente identica a \func{syslog}, la cui sola differenza è prendere invece di una lista esplicita di argomenti un unico argomento finale nella forma di una lista di argomenti passato come \macro{va\_list}, utile qualora si ottengano questi nella invocazione di una funzione -\index{variadic} \textit{variadic} (si rammenti quanto visto in +\index{funzioni!variadic} \textit{variadic} (si rammenti quanto visto in sez.~\ref{sec:proc_variadic}), è \funcd{vsyslog},\footnote{la funzione è originaria di BSD e per utilizzarla deve essere definito \macro{\_BSD\_SOURCE}.} il suo prototipo è: @@ -957,10 +957,10 @@ valore nullo per \param{mask} la maschera corrente non viene modificata; in questo modo si può leggere il valore della maschera corrente. Indicando un valore non nullo per \param{mask} la registrazione dei messaggi viene disabilitata per tutte quelle priorità che non rientrano nella maschera. In -genere il valore viene impostato usando la macro \macro{LOG\_MASK(p)} dove -\code{p} è una delle costanti di tab.~\ref{tab:sess_syslog_priority}. É -inoltre disponibile anche la macro \macro{LOG\_UPTO(p)} che permette di -specificare automaticamente tutte le priorità fino a quella indicata da +genere il valore viene impostato usando la macro \macro{LOG\_MASK}\texttt{(p)} +dove \code{p} è una delle costanti di tab.~\ref{tab:sess_syslog_priority}. É +inoltre disponibile anche la macro \macro{LOG\_UPTO}\texttt{(p)} che permette +di specificare automaticamente tutte le priorità fino a quella indicata da \code{p}. Una volta che si sia certi che non si intende registrare più nessun messaggio @@ -1022,7 +1022,7 @@ vederli anche in caso di blocco totale del sistema (nell'assunzione che la console sia collegata). In particolare la stampa dei messaggi sulla console è controllata dal -contenuto del file \procfile{/proc/sys/kernel/printk} (o con l'equivalente +contenuto del file \sysctlfile{kernel/printk} (o con l'equivalente parametro di \func{sysctl}) che prevede quattro valori numerici interi: il primo (\textit{console\_loglevel}) indica la priorità corrente oltre la quale vengono stampati i messaggi sulla console, il secondo @@ -1143,7 +1143,7 @@ e la funzione ritorna un valore nullo. Le operazioni corrispondenti ai valori 6, 7 ed 8 consentono di modificare la priorità oltre la quale i messaggi vengono stampati direttamente sulla \textit{console} e fanno riferimento ai parametri del kernel gestiti con le -variabili contenute in \procfile{/proc/sys/kernel/printk} di cui abbiamo +variabili contenute in \sysctlfile{kernel/printk} di cui abbiamo parlato prima, ed in particolare con 6 si imposta come corrente il valore minimo della terza variabile (\textit{minimum\_console\_level}), ottenendo l'effetto di ridurre al minimo i messaggi che arrivano in console, mentre con @@ -1432,7 +1432,7 @@ modificare i bit su cui non si interviene. \const{IGNBRK} non è impostato. Se \const{BRKINT} è impostato il BREAK causa lo scarico delle code, e se il terminale è il terminale di controllo per un - gruppo in foreground anche l'invio di \const{SIGINT} ai + gruppo in foreground anche l'invio di \signal{SIGINT} ai processi di quest'ultimo. Se invece \const{BRKINT} non è impostato un BREAK viene letto come un carattere NUL, a meno che non sia impostato \const{PARMRK} @@ -1643,7 +1643,7 @@ valore. \const{O\_NOBLOCK} si bloccherà il processo finché non si è stabilita una connessione con il modem; inoltre se viene rilevata una disconnessione viene inviato un - segnale di \const{SIGHUP} al processo di controllo del + segnale di \signal{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 \errcode{EIO}.\\ @@ -1758,10 +1758,10 @@ terminali. attivato dal carattere DISCARD. Non è presente in POSIX e non è supportato da Linux.\\ \const{NOFLSH} & Se impostato disabilita lo scarico delle code di ingresso - e uscita quando vengono emessi i segnali \const{SIGINT}, - \const{SIGQUIT} e \const{SIGSUSP}.\\ + e uscita quando vengono emessi i segnali \signal{SIGINT}, + \signal{SIGQUIT} e \signal{SIGSUSP}.\\ \const{TOSTOP} & Se abilitato, con il supporto per il job control presente, - genera il segnale \const{SIGTTOU} per un processo in + genera il segnale \signal{SIGTTOU} per un processo in background che cerca di scrivere sul terminale.\\ \const{PENDIN} & Indica che la linea deve essere ristampata, viene attivato dal carattere REPRINT e resta attivo fino alla @@ -1803,10 +1803,10 @@ altri.\footnote{in Linux il valore della costante è 32, anche se i caratteri \hline \const{VINTR} &\texttt{0x03}&(\texttt{C-c})& Carattere di interrupt, provoca l'emissione di - \const{SIGINT}.\\ + \signal{SIGINT}.\\ \const{VQUIT} &\texttt{0x1C}&(\texttt{C-\bslash})& Carattere di uscita, provoca l'emissione di - \const{SIGQUIT}.\\ + \signal{SIGQUIT}.\\ \const{VERASE}&\texttt{0x7f}&DEL,\texttt{C-?}& Carattere di ERASE, cancella l'ultimo carattere precedente nella linea.\\ @@ -1846,10 +1846,10 @@ altri.\footnote{in Linux il valore della costante è 32, anche se i caratteri START.\\ \const{VSUSP} &\texttt{0x1A}&(\texttt{C-z})& Carattere di sospensione. Invia il segnale - \const{SIGTSTP}.\\ + \signal{SIGTSTP}.\\ \const{VDSUSP}&\texttt{0x19}&(\texttt{C-y})& Carattere di sospensione ritardata. Invia il segnale - \const{SIGTSTP} quando il + \signal{SIGTSTP} quando il carattere viene letto dal programma, (non presente in POSIX e non riconosciuto in @@ -1938,9 +1938,9 @@ terminale qualunque nella struttura puntata da \param{termios\_p}; \func{tcsetattr} invece effettua la scrittura delle impostazioni e quando viene invocata sul proprio terminale di controllo può essere eseguita con successo solo da un processo in foreground. Se invocata da un processo in -background infatti tutto il gruppo riceverà un segnale di \const{SIGTTOU} come +background infatti tutto il gruppo riceverà un segnale di \signal{SIGTTOU} come se si fosse tentata una scrittura, a meno che il processo chiamante non abbia -\const{SIGTTOU} ignorato o bloccato, nel qual caso l'operazione sarà eseguita. +\signal{SIGTTOU} ignorato o bloccato, nel qual caso l'operazione sarà eseguita. La funzione \func{tcsetattr} prevede tre diverse modalità di funzionamento, specificabili attraverso l'argomento \param{optional\_actions}, che permette @@ -2153,7 +2153,7 @@ direttamente sulla gestione di quest'ultime e sull'interazione fra i dati in ingresso ed uscita e le relative code. In generale tutte queste funzioni 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 +terminale di controllo provocano l'emissione di \signal{SIGTTOU} come illustrato in sez.~\ref{sec:sess_ctrl_term}.\footnote{con la stessa eccezione, già vista per \func{tcsetattr}, che quest'ultimo sia bloccato o ignorato dal processo chiamante.}