X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=session.tex;h=eb7809e183adb222c9e630a8f008389d50a3f436;hp=2d1b69e1866d43e0e06b51fb529e30764252d5ad;hb=08c289c4acd775aabeb5beeb7b08566969e11d9b;hpb=f10ada1c0b49d3bbdb22dbe3a61e27914584d70b diff --git a/session.tex b/session.tex index 2d1b69e..eb7809e 100644 --- a/session.tex +++ b/session.tex @@ -170,7 +170,7 @@ i cui prototipi sono: esiste.} \end{functions} -La funzione \func{getpgid} permette di specificare il \acr{pid} del processo +La funzione \func{getpgid} permette di specificare il \ids{PID} del processo di cui si vuole sapere il \acr{pgid}; un valore nullo per \param{pid} restituisce il \acr{pgid} del processo corrente; \func{getpgrp} è di norma equivalente a \code{getpgid(0)}. @@ -207,7 +207,7 @@ 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 è -identificato dall'avere un \acr{pgid} uguale al suo \acr{pid}, in genere +identificato dall'avere un \acr{pgid} uguale al suo \ids{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 \funcd{setpgrp},\footnote{questa è la definizione di POSIX.1, BSD definisce @@ -216,13 +216,13 @@ tutti gli altri. Un nuovo raggruppamento si crea con la funzione richiedere esplicitamente la compatibilità all'indietro con BSD, definendo la macro \macro{\_BSD\_SOURCE}.} il cui prototipo è: \begin{prototype}{unistd.h}{int setpgrp(void)} - Modifica il \acr{pgid} al valore del \acr{pid} del processo corrente. + Modifica il \acr{pgid} al valore del \ids{PID} del processo corrente. \bodydesc{La funzione restituisce il valore del nuovo \textit{process group}.} \end{prototype} -La funzione, assegnando al \acr{pgid} il valore del \acr{pid} processo +La funzione, assegnando al \acr{pgid} il valore del \ids{PID} processo corrente, rende questo \itindex{process~group~leader} \textit{group leader} di un nuovo raggruppamento, tutti i successivi processi da esso creati apparterranno (a meno di non cambiare di nuovo il \acr{pgid}) al nuovo @@ -251,7 +251,7 @@ ancora eseguito una \func{exec}.\footnote{questa caratteristica è implementata dal kernel che mantiene allo scopo un altro campo, \var{did\_exec}, in \struct{task\_struct}.} Specificando un valore nullo per \param{pid} si indica il processo corrente, mentre specificando un valore nullo per -\param{pgid} si imposta il \textit{process group} al valore del \acr{pid} del +\param{pgid} si imposta il \textit{process group} al valore del \ids{PID} del processo selezionato; pertanto \func{setpgrp} è equivalente a \code{setpgid(0, 0)}. @@ -275,15 +275,15 @@ sessione ad un processo è quello di crearne una nuova con l'uso di \bodydesc{La funzione ritorna il valore del nuovo \acr{sid}, e -1 in caso di errore, il solo errore possibile è \errval{EPERM}, che si ha quando il - \acr{pgid} e \acr{pid} del processo coincidono.} + \acr{pgid} e \ids{PID} del processo coincidono.} \end{prototype} La funzione imposta il \acr{pgid} ed il \acr{sid} del processo corrente al -valore del suo \acr{pid}, creando così una nuova sessione ed un nuovo +valore del suo \ids{PID}, creando così una nuova sessione ed un nuovo \textit{process group} di cui esso diventa leader (come per i \textit{process group} un processo si dice leader di sessione\footnote{in Linux la proprietà è mantenuta in maniera indipendente con un apposito campo \var{leader} in - \struct{task\_struct}.} se il suo \acr{sid} è uguale al suo \acr{pid}) ed + \struct{task\_struct}.} se il suo \acr{sid} è uguale al suo \ids{PID}) ed unico componente. Inoltre la funzione distacca il processo da ogni terminale di controllo (torneremo sull'argomento in sez.~\ref{sec:sess_ctrl_term}) cui fosse in precedenza associato. @@ -292,13 +292,13 @@ La funzione ha successo soltanto se il processo non è già \itindex{process~group~leader} leader di un \textit{process group}, per cui per usarla di norma si esegue una \func{fork} e si esce, per poi chiamare \func{setsid} nel processo figlio, in modo che, avendo questo lo stesso -\acr{pgid} del padre ma un \acr{pid} diverso, non ci siano possibilità di +\acr{pgid} del padre ma un \ids{PID} diverso, non ci siano possibilità di errore.\footnote{potrebbe sorgere il dubbio che, per il riutilizzo dei valori - dei \acr{pid} fatto nella creazione dei nuovi processi (vedi + dei \ids{PID} fatto nella creazione dei nuovi processi (vedi sez.~\ref{sec:proc_pid}), il figlio venga ad assumere un valore corrispondente ad un \textit{process group} esistente; questo viene evitato - dal kernel che considera come disponibili per un nuovo \acr{pid} solo valori - che non corrispondono ad altri \acr{pid}, \acr{pgid} o \acr{sid} in uso nel + dal kernel che considera come disponibili per un nuovo \ids{PID} solo valori + che non corrispondono ad altri \ids{PID}, \acr{pgid} o \acr{sid} in uso nel sistema.} Questa funzione viene usata di solito nel processo di login (per i dettagli vedi sez.~\ref{sec:sess_login}) per raggruppare in una sessione tutti i comandi eseguiti da un utente dalla sua shell. @@ -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 \acr{uid} -ed i \acr{gid} (reali, effettivi e salvati) saranno impostati a quelli +invocato tali funzioni con i privilegi di amministratore, tutti gli \ids{UID} +ed i \ids{GID} (reali, effettivi e salvati) saranno impostati a quelli dell'utente. A questo punto \cmd{login} provvederà (fatte salve eventuali altre azioni @@ -660,7 +660,7 @@ occorrerà predisporlo in modo che esso compia le seguenti azioni: \item Eseguire una \func{fork} e terminare immediatamente il processo padre proseguendo l'esecuzione nel figlio. In questo modo si ha la certezza che il figlio non è un \itindex{process~group~leader} \textit{process group - leader}, (avrà il \acr{pgid} del padre, ma un \acr{pid} diverso) e si può + leader}, (avrà il \acr{pgid} del padre, ma un \ids{PID} diverso) e si può chiamare \func{setsid} con successo. Inoltre la shell considererà terminato il comando all'uscita del padre. \item Eseguire \func{setsid} per creare una nuova sessione ed un nuovo @@ -852,7 +852,7 @@ tab.~\ref{tab:sess_openlog_option}. sistema del \textit{syslog}.\\ \const{LOG\_PERROR} & Stampa anche su \file{stderr} (non previsto in POSIX.1-2001).\\ -\const{LOG\_PID} & Inserisce nei messaggi il \acr{pid} del processo +\const{LOG\_PID} & Inserisce nei messaggi il \ids{PID} del processo chiamante.\\ \hline \end{tabular}