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)}.
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 è
Ciascun raggruppamento di processi ha sempre un processo principale, il
cosiddetto \itindex{process~group~leader} \textit{process group leader}, che è
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
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)}
richiedere esplicitamente la compatibilità all'indietro con BSD, definendo
la macro \macro{\_BSD\_SOURCE}.} il cui prototipo è:
\begin{prototype}{unistd.h}{int setpgrp(void)}
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
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
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
\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
\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
\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
\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
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.
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
\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
sez.~\ref{sec:proc_pid}), il figlio venga ad assumere un valore
corrispondente ad un \textit{process group} esistente; questo viene evitato
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.
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
\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
\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
\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
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
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
è 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
è 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
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 è:
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
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
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
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
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
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
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