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)}.
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
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
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)}.
\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.
\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.
\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 \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
\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
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}
è 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 è:
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
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
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