Altro materiale sulle capabilities
authorSimone Piccardi <piccardi@gnulinux.it>
Sun, 19 Mar 2006 13:39:21 +0000 (13:39 +0000)
committerSimone Piccardi <piccardi@gnulinux.it>
Sun, 19 Mar 2006 13:39:21 +0000 (13:39 +0000)
prochand.tex

index 4af6ea92cd27ba140ef19b19b6d417b2d7ea4e32..cb431836af3ed2fb3b99ba82c8aa61dcce3cba15 100644 (file)
@@ -2406,6 +2406,28 @@ prende un vettore di valori di tipo \type{cap\_value\_t} nell'argomento
 tipo di impostazione da eseguire (cancellazione o impostazione) viene indicato
 dall'argomento \param{value}.
 
+Per la visualizzazione dello stato delle \textit{capabilities} l'interfaccia
+prevede una funzione apposita, \funcd{cap\_to\_text}, il cui prototipo è:
+\begin{functions}
+  \headdecl{sys/capability.h}
+
+  \funcdecl{char * cap\_to\_text(cap\_t caps, ssize\_t * length\_p)}
+
+  Genera una visualizzazione testuale delle \textit{capabilities}.
+  
+  \bodydesc{La funzione ritorna un puntatore alla stringa con la descrizione
+    delle \textit{capabilities} in caso di successo e \val{NULL} in caso di
+    errore, nel qual caso \var{errno} può assumere i valori \errval{EINVAL} o
+    \errval{ENOMEM}.
+  }
+\end{functions}
+
+La funzione ritorna l'indirizzo di una stringa contente la descrizione
+testuale del contenuto del \textit{capabilities state} \param{caps} passato
+come argomento, e, qualora l'argomento \param{length\_p} sia diverso da
+\val{NULL}, restituisce nella variabile intera da questo puntata la lunghezza
+della stringa. 
+
 Fin quei abbiamo trattato delle funzioni di manipolazione dei
 \textit{capabilities state}; quando si vuole eseguire la lettura delle
 \textit{capabilities} del processo corrente si deve usare la funzione
@@ -2447,8 +2469,23 @@ prototipo\footnote{su alcune pagine di manuale la funzione 
 La funzione legge il valore delle \textit{capabilities} del processo indicato
 con l'argomento \param{pid}, salvando il risultato nel \textit{capabilities
   state} all'indirizzo \param{cap\_d} che deve essere stato creato in
-precedenza. Qualora il processo non esista si avrà un errore di \errval{}.
+precedenza. Qualora il processo non esista si avrà un errore di \errval{ESRCH}.
 
+Infine per impostare le \textit{capabilities} del processo corrente (non
+esiste una funzione che permetta di cambiare le \textit{capabilities} di un
+altro processo) si deve usare la funzione \funcd{cap\_set\_proc}, il cui
+prototipo è:
+\begin{functions}
+  \headdecl{sys/capability.h}
+
+  \funcdecl{int cap\_set\_proc(cap\_t cap\_p)}
+  Imposta le \textit{capabilities} del processo corrente.
+  
+  \bodydesc{La funzione ritorna 0 in caso di successo e $-1$ in caso di
+    errore, nel qual caso \var{errno} può assumere i valori \errval{EINVAL},
+    \errval{EPERM} o \errval{ENOMEM}.  
+  }
+\end{functions}