Prosegue la risistemazione degli indici. Trattata CLONE_FS.
[gapil.git] / session.tex
index fff78122aa92fd72afcd26c5a5d0e34fd032dbfe..10cc5cf12f4e71b63d5de7ece69c56e7e3a84d25 100644 (file)
@@ -1,6 +1,6 @@
 %% session.tex
 %%
-%% Copyright (C) 2000-2013 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2015 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",
@@ -195,9 +195,9 @@ prototipo è:
 {La funzione ritorna l'identificatore (un numero positivo) in caso di successo
   e $-1$ per un errore, nel qual caso \var{errno} assumerà uno dei valori:
   \begin{errlist}
-    \item[\errcode{ESRCH}] il processo selezionato non esiste.
     \item[\errcode{EPERM}] il processo selezionato non fa parte della stessa
       sessione del processo corrente (solo in alcune implementazioni).
+    \item[\errcode{ESRCH}] il processo selezionato non esiste.
   \end{errlist}
 }
 \end{funcproto}
@@ -264,11 +264,11 @@ il cui prototipo è:
   successo e $-1$ per un errore, nel qual caso \var{errno} assumerà uno dei
   valori:
   \begin{errlist}
-    \item[\errcode{ESRCH}] il processo selezionato non esiste.
-    \item[\errcode{EPERM}] il cambiamento non è consentito.
     \item[\errcode{EACCES}] il processo di cui si vuole cambiare il \ids{PGID}
       ha già eseguito una \func{exec}.
     \item[\errcode{EINVAL}] il valore di \param{pgid} è negativo.
+    \item[\errcode{EPERM}] il cambiamento non è consentito.
+    \item[\errcode{ESRCH}] il processo selezionato non esiste.
   \end{errlist}
 }
 \end{funcproto}
@@ -403,9 +403,9 @@ funzione \funcd{tcsetpgrp}, il cui prototipo è:
 {La funzione ritorna $0$ in caso di successo e $-1$ per un errore, nel qual
   caso \var{errno} assumerà uno dei valori: 
   \begin{errlist}
+    \item[\errcode{ENOSYS}] il sistema non supporta il \textit{job control}.
     \item[\errcode{ENOTTY}] il file \param{fd} non corrisponde al terminale di
       controllo del processo chiamante.
-    \item[\errcode{ENOSYS}] il sistema non supporta il \textit{job control}.
     \item[\errcode{EPERM}] il \textit{process group} specificato non è nella
     stessa sessione del processo chiamante.
   \end{errlist}
@@ -655,21 +655,21 @@ numero di volte dopo di che \cmd{login} esce ed \cmd{init} provvede a
 rilanciare un'altra istanza di \cmd{getty}.
 
 Se invece la password corrisponde \cmd{login} esegue \func{chdir} per
-impostare come \index{directory~di~lavoro} directory di lavoro la \textit{home
-  directory} dell'utente, cambia i diritti di accesso al 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.\footnote{oggi queste operazioni, insieme ad altre relative alla
-  contabilità ed alla tracciatura degli accessi, vengono gestite dalle
-  distribuzioni più recenti in una maniera generica appoggiandosi a servizi di
-  sistema come \textit{ConsoleKit}, ma il concetto generale resta
-  sostanzialmente lo stesso.}  Inoltre il programma provvede a costruire gli
-opportuni valori per le variabili di ambiente, come \envvar{HOME},
-\envvar{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 \ids{UID} ed i \ids{GID}
-(reali, effettivi e salvati) saranno impostati a quelli dell'utente.
+impostare come directory di lavoro la \textit{home directory} dell'utente,
+cambia i diritti di accesso al 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.\footnote{oggi queste operazioni,
+  insieme ad altre relative alla contabilità ed alla tracciatura degli
+  accessi, vengono gestite dalle distribuzioni più recenti in una maniera
+  generica appoggiandosi a servizi di sistema come \textit{ConsoleKit}, ma il
+  concetto generale resta sostanzialmente lo stesso.}  Inoltre il programma
+provvede a costruire gli opportuni valori per le variabili di ambiente, come
+\envvar{HOME}, \envvar{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 \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
 iniziali, come la stampa di messaggi di benvenuto o il controllo della posta)
@@ -738,11 +738,11 @@ occorrerà predisporlo in modo che esso compia le seguenti azioni:
   eseguendo una ulteriore \func{fork} uscendo nel padre e proseguendo nel
   figlio. In questo caso, non essendo più quest'ultimo un leader di sessione
   non potrà ottenere automaticamente un terminale di controllo.
-\item Eseguire una \func{chdir} per impostare la \index{directory~di~lavoro}
-  directory di lavoro del processo (su \file{/} o su una directory che
-  contenga dei file necessari per il programma), per evitare che la directory
-  da cui si è lanciato il processo resti in uso e non sia possibile rimuoverla
-  o smontare il filesystem che la contiene.
+\item Eseguire una \func{chdir} per impostare la directory di lavoro del
+  processo (su \file{/} o su una directory che contenga dei file necessari per
+  il programma), per evitare che la directory da cui si è lanciato il processo
+  resti in uso e non sia possibile rimuoverla o smontare il filesystem che la
+  contiene.
 \item Impostare la \itindex{umask} maschera dei permessi (di solito con
   \code{umask(0)}) in modo da non essere dipendenti dal valore ereditato da
   chi ha lanciato originariamente il processo.
@@ -772,10 +772,9 @@ La funzione esegue una \func{fork}, per uscire subito, con \func{\_exit}, nel
 padre, mentre l'esecuzione prosegue nel figlio che esegue subito una
 \func{setsid}. In questo modo si compiono automaticamente i passi 1 e 2 della
 precedente lista. Se \param{nochdir} è nullo la funzione imposta anche la
-\index{directory~di~lavoro} directory di lavoro su \file{/},
-se \param{noclose} è nullo i file standard vengono rediretti su
-\file{/dev/null} (corrispondenti ai passi 4 e 6); in caso di valori non nulli
-non viene eseguita nessuna altra azione.
+directory di lavoro su \file{/}, se \param{noclose} è nullo i file standard
+vengono rediretti su \file{/dev/null} (corrispondenti ai passi 4 e 6); in caso
+di valori non nulli non viene eseguita nessuna altra azione.
 
 Dato che un programma demone non può più accedere al terminale, si pone il
 problema di come fare per la notifica di eventuali errori, non potendosi più
@@ -1012,8 +1011,8 @@ funzione è originaria di BSD e per utilizzarla deve essere definito
 La sola differenza con \func{syslog} è quella di prendere invece di una lista
 di argomenti esplicita un unico argomento finale passato nella forma di una
 \macro{va\_list}; la funzione risulta utile qualora si ottengano gli argomenti
-dalla invocazione di un'altra funzione \index{funzioni!variadic}
-\textit{variadic} (si rammenti quanto visto in sez.~\ref{sec:proc_variadic}).
+dalla invocazione di un'altra funzione \textit{variadic} (si ricordi quanto
+visto in sez.~\ref{sec:proc_variadic}).
 
 Per semplificare la gestione della scelta del livello di priorità a partire
 dal quale si vogliono registrare i messaggi, le funzioni di gestione
@@ -1147,11 +1146,11 @@ circolare esiste una apposita \textit{system call} chiamata anch'essa
   \item[\errcode{EINVAL}] l'argomento \param{op} non ha un valore valido, o si
     sono specificati valori non validi per gli altri argomenti quando questi
     sono richiesti.
-  \item[\errcode{ERESTARTSYS}] l'operazione è stata interrotta da un segnale.
-  \item[\errcode{EPERM}] non si hanno i privilegi richiesti per l'operazione
-    richiesta.
   \item[\errcode{ENOSYS}] il supporto per \texttt{printk} non è stato compilato
     nel kernel.
+  \item[\errcode{EPERM}] non si hanno i privilegi richiesti per l'operazione
+    richiesta.
+  \item[\errcode{ERESTARTSYS}] l'operazione è stata interrotta da un segnale.
    \end{errlist}
 }
 \end{funcproto}
@@ -1453,9 +1452,9 @@ associato ad un file descriptor; il suo prototipo è:
 La funzione restituisce il puntatore alla stringa contenente il nome del file
 di dispositivo del terminale associato a \param{fd}, che però è allocata
 staticamente e può essere sovrascritta da successive chiamate. Per questo
-della funzione esiste anche una versione \index{funzioni!rientranti}
-rientrante, \funcd{ttyname\_r}, che non presenta il problema dell'uso di una
-zona di memoria statica; il suo prototipo è:
+della funzione esiste anche una versione rientrante, \funcd{ttyname\_r}, che
+non presenta il problema dell'uso di una zona di memoria statica; il suo
+prototipo è:
 
 \begin{funcproto}{
 \fhead{unistd.h}
@@ -2134,7 +2133,7 @@ dall'argomento \param{flag}; prima si leggono i valori correnti
 errore (\texttt{\small 9--10}), poi si provvede a impostare solo i bit
 richiesti (possono essere più di uno) con un OR binario (\texttt{\small 12});
 infine si scrive il nuovo valore modificato con \func{tcsetattr}
-(\texttt{\small 13}), notificando un eventuale errore (\texttt{\small 14-15})
+(\texttt{\small 13}), notificando un eventuale errore (\texttt{\small 14--15})
 o uscendo normalmente.
 
 \begin{figure}[!htbp]