From: Simone Piccardi Date: Sun, 19 Mar 2006 13:39:21 +0000 (+0000) Subject: Altro materiale sulle capabilities X-Git-Url: https://gapil.gnulinux.it/gitweb/?a=commitdiff_plain;h=f9f9a48d6aafbbc63bb6dad53fe9fe91835057c5;p=gapil.git Altro materiale sulle capabilities --- diff --git a/prochand.tex b/prochand.tex index 4af6ea9..cb43183 100644 --- a/prochand.tex +++ b/prochand.tex @@ -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}