Revisione dei messaggi di errore
[gapil.git] / session.tex
index 58e4ddbe03ffbbdf08c4d31eb1128ef34e88c781..7b7b738c1be28baa175c0487c699f66a07199f24 100644 (file)
@@ -154,9 +154,43 @@ processo con lo stesso valore che hanno nel processo padre, per cui un
 processo appena creato appartiene sempre allo stesso raggruppamento e alla
 stessa sessione del padre.
 
-Ciascun gruppo di processi ha sempre un processo principale, il
-\textit{process leader}, che è quello che è identificato dall'avere il suo
-\acr{pgid} uguale al \acr{pid}, per
+Ciascun gruppo di processi ha sempre un processo principale, il cosiddetto
+\textit{process leader}, che è identificato dall'avere un \acr{pgid} uguale al
+suo \acr{pid}, in genere questo è il primo processo del gruppo, che si
+incarica di lanciare tutti gli altri. Un nuovo gruppo si crea con la funzione
+\func{setpgrp},\footnote{questa è la definizione di POSIX.1, BSD definisce una
+  funzione con lo stesso nome, che però è identica a \func{setpgid}; nelle
+  \acr{glibc} viene sempre usata sempre questa definizione, a meno di non
+  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.
+  
+  \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
+corrente, rende questo \textit{process leader} di un nuovo gruppo, tutti i
+successivi processi da esso creati apparterranno (a meno di non cambiare di
+nuovo il \acr{pgid}) al nuovo gruppo. È possibile invece spostare un processo
+da un gruppo ad un altro con la funzione \func{setpgid}, il cui prototipo è:
+\begin{prototype}{unistd.h}{int setpgid(pid\_t pid, pid\_t pgid)}
+  Assegna al \acr{pgid} del processo \param{pid} il valore \param{pgid}.
+  
+  \bodydesc{La funzione ritorna il valore del nuovo \textit{process group}, e
+  -1 in caso di errore, nel qual caso \var{errno} assumerà i valori:
+    \begin{errlist}
+    \item[\macro{ESRCH}] Il processo selezionato non esiste.
+    \item[\macro{EPERM}] Il processo selezionato non fa parte della stessa
+    sessione del processo corrente.
+    \end{errlist}
+ }
+\end{prototype}
+
+
+
+
 
 La differenza fra i due identificatori è che un processo
 può cambiare \acr{pgid} soltanto ad un valore che corrisponda al