From: Simone Piccardi Date: Thu, 8 Oct 2015 23:20:35 +0000 (+0000) Subject: Chiarimento prctl per PR_SET_CHILD_SUBREAPER e PR_GET_CHILD_SUBREAPER X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=commitdiff_plain;h=59dd0e503abc074d287d42b64b62f8199912b91b Chiarimento prctl per PR_SET_CHILD_SUBREAPER e PR_GET_CHILD_SUBREAPER --- diff --git a/prochand.tex b/prochand.tex index f310cfa..2fed790 100644 --- a/prochand.tex +++ b/prochand.tex @@ -3899,20 +3899,36 @@ Introdotta a partire dal kernel 2.4.21, solo su PowerPC. memoria. Tutti gli argomenti non utilizzati (al momento tutti) devono essere nulli pena la ricezione di un errore di \errval{EINVAL}. Introdotta a partire dal kernel 2.6.32. -% TODO: verificare questa parte -\item[\const{PR\_SET\_CHILD\_SUBREAPER}] Imposta il processo indicato con il - \ids{PID} specificato da \param{arg2} come nuovo ``\textsl{genitore - adottivo}'' per tutti i processi discendenti del chiamante che - diventeranno orfani, sostituendo in questo ruolo \cmd{init} (si ricordi - quanto illustrato in sez.~\ref{sec:proc_termination}). Introdotta a partire - dal kernel 3.4. -\item[\const{PR\_GET\_CHILD\_SUBREAPER}] Ottiene il \ids{PID} del processo a - cui vengono assegnati come figli gli orfani del processo - corrente. Introdotta a partire dal kernel 3.4. - % TODO documentare PR_SET_SECCOMP introdotto a partire dal kernel 3.5. Vedi: - % * Documentation/prctl/seccomp_filter.txt - % * http://lwn.net/Articles/475043/ - +\itindbeg{child reaper} +\item[\const{PR\_SET\_CHILD\_SUBREAPER}] Se \param{arg2} è diverso da zero + imposta l'attributo di \textit{child reaper} per il processo, se nullo lo + cancella. Lo stato di \textit{child reaper} è una funzionalità, introdotta + con il kernel 3.4, che consente di far svolgere al processo che ha questo + attributo il ruolo di ``\textsl{genitore adottivo}'' per tutti i processi + suoi ``\textsl{discendenti}'' che diventano orfani, in questo modo il + processo potrà ricevere gli stati di terminazione alla loro uscita, + sostituendo in questo ruolo \cmd{init} (si ricordi quanto illustrato in + sez.~\ref{sec:proc_termination}). Il meccanismo è stato introdotto ad uso + dei programmi di gestione dei servizi, per consentire loro di ricevere gli + stati di terminazione di tutti i processi che lanciano, anche se questi + eseguono una doppia \func{fork}; nel comportamento ordinario infatti questi + verrebbero adottati da \cmd{init} ed il programma che li ha lanciati non + sarebbe più in grado di riceverne lo stato di terminazione. Se un processo + con lo stato di \textit{child reaper} termina prima dei suoi discendenti, + svolgerà questo ruolo il più prossimo antenato ad avere lo stato di + \textit{child reaper}, +\item[\const{PR\_GET\_CHILD\_SUBREAPER}] Ottiene l'impostazione relativa allo + lo stato di \textit{child reaper} del processo chiamante, salvata come + \textit{value result} all'indirizzo puntato da \param{arg2} (da indicare + come di tipo \code{int *}). Il valore viene letto come valore logico, se + diverso da 0 lo stato di \textit{child reaper} è attivo altrimenti è + disattivo. Introdotta a partire dal kernel 3.4. +\itindend{child reaper} + + +% TODO documentare PR_SET_SECCOMP introdotto a partire dal kernel 3.5. Vedi: +% * Documentation/prctl/seccomp_filter.txt +% * http://lwn.net/Articles/475043/ % TODO documentare PR_MPX_INIT e PR_MPX_RELEASE, vedi % http://lwn.net/Articles/582712/