Provided by: manpages-fr-dev_3.27fr1.4-1_all bug

NOM

       prctl - Operations sur un processus

SYNOPSIS

       #include <sys/prctl.h>

       int prctl(int option, unsigned long arg2, unsigned long arg3,
                 unsigned long arg4, unsigned long arg5);

DESCRIPTION

       prctl()  est  invoque avec un premier parametre indiquant ce qu'il faut
       faire,  (ses  valeurs  sont  definies  dans  <linux/prctl.h>),  et  des
       parametres  supplementaires  dont  la  signification  depend du premier
       parametre. Celui-ci peut etre :

       PR_CAPBSET_READ (depuis Linux 2.6.25)
              Renvoyer (en resultat de fonction) 1 si la capacite indiquee par
              arg2  est  presente  dans  la  limitation de capacites du thread
              appelant ou 0 si elle ne l'est pas. Les constantes des capacites
              sont   definies   dans   <linux/capability.h>.   L'ensemble  des
              capacites liees  controle  si  le  processus  peut  recevoir  la
              capacite par un ensemble de capacites autorisees pour un fichier
              lors d'un appel futur a execve(2).

              Si la capacite indiquee  dans  arg2  n'est  pas  valable,  alors
              l'appel echoue avec l'erreur EINVAL.

       PR_CAPBSET_DROP (depuis Linux 2.6.25)
              Si  le  thread appelant a la capacite CAP_SETPCAP, alors enlever
              la capacite indiquee par arg2 dans l'ensemble de  limitation  de
              capacites  du  thread  appelant.  Les  fils  du  thread appelant
              heriteront de cette nouvelle limitation de capacites reduite.

              L'appel echoue avec l'erreur EPERM si le thread appelant n'a pas
              la  capacite  CAP_SETPCAP ;  ou  avec l'erreur EINVAL si arg2 ne
              represente pas une capacite correcte ; ou avec  l'erreur  EINVAL
              si  les  capacites de fichier ne sont pas activee dans le noyau,
              auquel cas les limitations ne sont pas prises en charge  par  le
              noyau.

       PR_SET_DUMPABLE (depuis Linux 2.3.20)
              Fixer  l'attribut  determinant  si  un  fichier core est produit
              lorsque le processus recoit un signal dont le  comportement  par
              defaut  est  de  produire  un  fichier  core.  (Normalement  cet
              attribut est valide pour  un  processus  par  defaut,  mais  est
              efface a l'execution d'un programme Set-UID ou Set-GID ainsi que
              par divers appels systeme manipulant des UID et GID).  Dans  les
              noyaux jusqu'a 2.6.12 inclus, arg2 doit valoir 0 (pas de fichier
              core) ou 1 (fichier core possible). Entre les noyaux  2.6.13  et
              2.6.17,  la valeur 2 etait egalement autorisee ; elle permettait
              a un binaire qui ne produirait normalement pas de  fichier  core
              d'en creer un uniquement lisible par root ; cette fonctionnalite
              a ete supprimee pour des raisons de securite.  (Consultez  aussi
              la description de /proc/sys/fs/suid_dumpable dans proc(5).)

       PR_GET_DUMPABLE (depuis Linux 2.3.20)
              Renvoyer  (en  resultat de fonction) l'etat actuel de l'attribut
              de creation de fichier core du processus appelant.

       PR_SET_ENDIAN (depuis Linux 2.6.18, seulement sur PowerPC)
              Fixer le boutisme (endianness) du processus appelant a la valeur
              donnee  dans  arg2,  qui doit etre l'une des valeurs suivantes :
              PR_ENDIAN_BIG,   PR_ENDIAN_LITTLE,    ou    PR_ENDIAN_PPC_LITTLE
              (PowerPC pseudo-petit boutiste).

       PR_GET_ENDIAN (depuis Linux 2.6.18, seulement sur PowerPC)
              Renvoyer  le  boutisme  (endianness) du processus appelant, dans
              l'emplacement pointe par (int *) arg2.

       PR_SET_FPEMU (depuis Linux 2.4.18, 2.5.9, seulement sur ia64)
              Fixer les bits de controle de l'emulation de FPU a arg2.  Passer
              PR_FPEMU_NOPRINT  pour  emuler  silencieusement  les  operations
              flottantes, ou PR_FPEMU_SIGFPE pour ne pas emuler les operations
              flottantes, et envoyer SIGFPE.

       PR_GET_FPEMU (depuis Linux 2.4.18, 2.5.9, seulement sur ia64)
              Renvoyer  les  bits  de  controle  de  l'emulation  de FPU, dans
              l'emplacement pointe par (int *) arg2.

       PR_SET_FPEXC (depuis Linux 2.4.21, 2.5.32, seulement sur PowerPC)
              Fixer le mode d'exception flottante a  arg2.  Passer  la  valeur
              PR_FP_EXC_SW_ENABLE   pour   utiliser  FPEXC  pour  activer  les
              exceptions  flottantes,   PR_FP_EXC_DIV   pour   les   divisions
              flottantes  par  zero,  PR_FP_EXC_OVF  pour  les depassements de
              capacite vers le haut, PR_FP_EXC_UND pour  les  depassements  de
              capacite vers le bas, PR_FP_EXC_RES pour les resultats flottants
              inexacts,   PR_FP_EXC_INV   pour   les   operations   flottantes
              invalides,  PR_FP_EXC_DISABLED  pour  desactiver  les exceptions
              flottantes,  PR_FP_EXC_NONRECOV  pour   le   mode   d'exceptions
              asynchrone   non   recuperable,  PR_FP_EXC_ASYNC  pour  le  mode
              d'exceptions asynchrone recuperable, PR_FP_EXC_PRECISE  pour  le
              mode d'exception precis.

       PR_GET_FPEXC (depuis Linux 2.4.21, 2.5.32, seulement sur PowerPC)
              Renvoyer  le  mode  d'exception  flottante,  dans  l'emplacement
              pointe par (int *) arg2.

       PR_SET_KEEPCAPS (depuis Linux 2.2.18)
              Fixer l'etat de l'attribut  de  conservation  des  capacites  du
              thread  (keep  capabilities),  qui  determine  si l'ensemble des
              capacites disponibles est efface lorsqu'on modifie les UID reel,
              effectif  et sauve du thread de maniere a ce que tous soient non
              nuls alors qu'auparavant l'un au moins etait  nul.  Par  defaut,
              l'ensemble  des  capacites  disponibles est efface lorsqu'un tel
              changement intervient.  Fixer  l'attribut  de  conservation  des
              capacites  du thread l'empeche d'etre efface. arg2 doit valoir 0
              (les  capacites  disponibles  sont  effacees)  ou  1  (capacites
              disponibles conservees). L'ensemble des capacites effectives est
              toujours efface lorsqu'un tel changement intervient, quelle  que
              soit  la valeur de l'attribut de conservation des capacites. Cet
              attribut  est  remis  a  zero  pour  les  appels  ulterieurs   a
              execve(2).

       PR_GET_KEEPCAPS (depuis Linux 2.2.18)
              Renvoyer  (en  resultat de fonction) l'etat actuel de l'attribut
              de conservation des capacites du thread appelant.

       PR_SET_NAME (depuis Linux 2.6.9)
              Fixer le nom du processus appelant, en utilisant  la  valeur  de
              l'emplacement  pointe  par  (char *)  arg2.  Le  nom  peut avoir
              jusqu'a 16 octets de long et doit etre termine par un  caractere
              nul s'il est plus petit.

       PR_GET_NAME (depuis Linux 2.6.11)
              Renvoyer le nom du processus appelant, dans le tampon pointe par
              (char *) arg2. Le  tampon  doit  etre  suffisamment  grand  pour
              contenir  jusqu'a  16  octets ;  la  chaine sera terminee par un
              caractere nul si elle est plus petite.

       PR_SET_PDEATHSIG (depuis Linux 2.1.57)
              Configurer le signal de mort du pere du processus appelant  avec
              la  valeur  arg2  (qui  peut  etre  un  numero  de  signal  dans
              l'intervalle 1..maxsig, ou etre nul pour effacer le signal).  Il
              s'agit  du numero du signal que le processus appelant recevra si
              son pere se termine. Cette valeur est effacee pour le fils  d'un
              fork(2).

       PR_GET_PDEATHSIG (depuis Linux 2.3.15)
              Renvoyer la valeur actuelle du signal de mort du processus pere,
              dans l'emplacement pointe par (int *) arg2.

       PR_SET_SECCOMP (depuis Linux 2.6.23)
              Configurer  le  mode  de  traitement  securise  pour  le  thread
              appelant.  Dans  l'implementation  actuelle, arg2 doit valoir 1.
              Quand le mode de traitement securise a ete mis a  1,  les  seuls
              appels  systeme  permis  pour  le thread sont read(2), write(2),
              _exit(2) et sigreturn(2). Les autres appels systeme provoque  la
              reception  d'un  signal  SIGKILL. Le mode de traitement securise
              est utile pour les  applications  de  traitement  numerique  qui
              peuvent  avoir  besoin  d'executer des instructions ne provenant
              pas  d'une  source  de  confiance,  lues  a  partir  d'un  tuyau
              (<< pipe >>)  ou  d'une socket. Cette operation n'est disponible
              que si le noyau a ete  configure  avec  l'option  CONFIG_SECCOMP
              activee.

       PR_GET_SECCOMP (depuis Linux 2.6.23)
              Renvoyer  le  mode de traitement securise du thread appelant. Ce
              n'est pas tres utile avec  l'implementation  actuelle  (le  mode
              vaut  toujours  1), mais pourrait etre utile dans le future pour
              d'autres modes :  si  l'appelant  n'est  pas  dans  un  mode  de
              traitement  securise,  cette operation renvoie 0 ; si l'appelant
              est dans le mode de traitement securise, alors  l'appel  prctl()
              provoquera  l'envoie  d'un  signal  SIGKILL  au processus. Cette
              operation n'est disponible que si le noyau a ete configure  avec
              l'option CONFIG_SECCOMP activee.

       PR_SET_SECUREBITS (depuis Linux 2.6.26)
              Configurer  l'attribut  << securebits >> du thread appelant a la
              valeur fournie par arg2. Consultez capabilities(7).

       PR_GET_SECUREBITS (depuis Linux 2.6.26)
              Renvoyer (en resultat de fonction) l'etat actuel  de  l'attribut
              << securebits >> du thread appelant. Consultez capabilities(7).

       PR_SET_TIMING (depuis Linux 2.6.0-test4)
              Permet  de  choisir la methode de mesure du temps du processus a
              utiliser,  en  passant  dans  arg2  soit   PR_TIMING_STATISTICAL
              (methode   statistique  traditionnelle)  ou  PR_TIMING_TIMESTAMP
              (methode exacte utilisant des horodatages).  PR_TIMING_TIMESTAMP
              n'est  pas  implemente  pour l'instant (l'utilisation de ce mode
              renverra l'erreur EINVAL).

       PR_GET_TIMING (depuis Linux 2.6.0-test4)
              Renvoyer (en resultat de fonction) quelle methode de  mesure  du
              temps du processus est utilisee actuellement.

       PR_SET_TSC (depuis Linux 2.6.26, seulement sur x86)
              Configurer  l'etat  de  l'attribut  qui  indique  si le compteur
              d'horodatage  peut  etre   lu   par   le   processus.   Utilisez
              PR_TSC_ENABLE  pour  arg2  permet  d'autoriser  les  lectures ou
              PR_TSC_SIGSEGV pour  produire  un  SIGSEGV  quand  le  processus
              essaie de lire le compteur d'horodatage.

       PR_GET_TSC (depuis Linux 2.6.26, seulement sur x86)
              Renvoyer,  dans l'emplacement pointe par (int *) arg2, l'etat de
              l'attribut qui indique si le compteur d'horodatage peut etre lu.

       PR_SET_UNALIGN
              (Seulement sur : ia64,  depuis  Linux  2.3.48 ;  parisc,  depuis
              Linux  2.6.15 ;  PowerPC,  depuis  Linux  2.6.18 ; Alpha, depuis
              Linux 2.6.22) Fixer les bits de  controle  pour  les  acces  non
              alignes  a  arg2.  La valeur PR_UNALIGN_NOPRINT signifie que les
              acces non alignes en espace  utilisateurs  sont  silencieusement
              corriges, et PR_UNALIGN_SIGBUS cause l'envoi de SIGBUS lors d'un
              acces non aligne.

       PR_GET_UNALIGN
              (Consultez PR_SET_UNALIGN pour les informations sur les versions
              et  les  architectures)  Renvoyer les bits de controle des acces
              non alignes, dans l'emplacement pointe par (int *) arg2.

       PR_MCE_KILL (depuis Linux 2.6.32)
              Fixer la politique de suppression de  memoire  corrompue  de  la
              machine  pour  le thread actuel. Si arg2 vaut PR_MCE_KILL_CLEAR,
              effacer la politique de  suppression  de  memoire  corrompue  et
              utiliser  la  valeur par defaut du systeme (qui est definie dans
              /proc/sys/vm/memory_failure_early_kill, consultez  proc(5)).  Si
              arg2 vaut PR_MCE_KILL_SET, utiliser une politique de suppression
              de memoire corrompue specifique au thread.  Dans  ce  cas,  arg3
              definit   si   la  politique  est  immediate  (early  kill  avec
              PR_MCE_KILL_EARLY), differee (late kill avec  PR_MCE_KILL_LATE),
              ou  la  valeur  par defaut du systeme (PR_MCE_KILL_DEFAULT). Une
              suppression immediate signifie que la  tache  recoit  un  signal
              SIGBUS  des  que la corruption memoire materielle est detectee a
              l'interieur de son  espace  d'adressage.  En  mode  retarde,  le
              processus  n'est  tue que lorsqu'il accede a une page corrompue.
              Consultez sigaction(2) pour plus d'informations  sur  le  signal
              SIGBUS.  Cette politique est heritee par les fils. Les arguments
              restants de prctl(), non utilises, doivent etre mis a zero  pour
              preparer la future compatibilite.

       PR_MCE_KILL_GET (depuis Linux 2.6.32)
              Renvoyer  la  politique  actuelle (par processus) de suppression
              des processus empoisonnes. Tous les arguments  non  utilises  de
              prctl()  doivent etre nuls.

VALEUR RENVOY'EE

       En  cas de reussite, PR_GET_DUMPABLE, PR_GET_KEEPCAPS, PR_CAPBSET_READ,
       PR_GET_TIMING, PR_GET_SECUREBITS, PR_MCE_KILL_GET et (si elle  rend  la
       main)   PR_GET_SECCOMP   renvoient   les   valeurs  positives  decrites
       ci-dessus. Toute autre valeur d'option renvoie 0en cas de reussite.  En
       cas d'echec, -1 est renvoye et errno contient le code d'erreur.

ERREURS

       EFAULT arg2 est une adresse non valable.

       EINVAL La valeur de option n'est pas reconnue.

       EINVAL option  vaut  PR_MCE_KILL ou PR_MCE_KILL_GET, et au moins un des
              arguments non utilises de prctl()  n'est pas nul.

       EINVAL arg2 n'est pas une valeur valable pour cette option.

       EINVAL option vaut PR_SET_SECCOMP ou PR_SET_SECCOMP et le noyau n'a pas
              ete configure avec CONFIG_SECCOMP.

       EPERM  option  vaut PR_SET_SECUREBITS et l'appelant n'a pas la capacite
              CAP_SETPCAP   ou   a   essaye   d'enlever   un    attribut    de
              << verrouillage >>  ou a essayer de positionner un attribut pour
              lequel l'attribut de verrouillage  etait  positionne  (consultez
              capabilities(7)).

       EPERM  option       vaut       PR_SET_KEEPCAPS       et      l'attribut
              SECURE_KEEP_CAPS_LOCKED de l'appelant est positionne  (consultez
              capabilities(7)).

       EPERM  option  vaut  PR_CAPBSET_DROP  et l'appelant n'a pas la capacite
              CAP_SETPCAP.

VERSIONS

       L'appel systeme prctl() a ete introduit dans Linux 2.1.57.

CONFORMIT'E

       Cet appel systeme est specifique  a  Linux.  IRIX  dispose  d'un  appel
       systeme   prctl()   (egalement   introduit   dans   Linux   2.1.44  sur
       l'architecture MIPS sous le nom irix_prctl), dont le prototype est

       ptrdiff_t prctl(int option, int arg2, int arg3);

       et les options permettent de d'obtenir le nombre maximal  de  processus
       par  utilisateur,  le  nombre maximal de processeurs utilisables par un
       processus, verifier si un processus est bloque, lire ou fixer la taille
       des piles,...

VOIR AUSSI

       signal(2), core(5)

COLOPHON

       Cette  page  fait  partie  de  la  publication 3.27 du projet man-pages
       Linux. Une description du projet et des instructions pour signaler  des
       anomalies       peuvent       etre       trouvees      a      l'adresse
       <URL:http://www.kernel.org/doc/man-pages/>.

TRADUCTION

       Depuis 2010, cette traduction est maintenue a l'aide  de  l'outil  po4a
       <URL:http://po4a.alioth.debian.org/>   par   l'equipe   de   traduction
       francophone       au       sein        du        projet        perkamon
       <URL:http://perkamon.alioth.debian.org/>.

       Christophe  Blaess  <URL:http://www.blaess.fr/christophe/> (1996-2003),
       Alain  Portal  <URL:http://manpagesfr.free.fr/>  (2003-2006).    Julien
       Cristau et l'equipe francophone de traduction de Debian (2006-2009).

       Veuillez   signaler   toute   erreur   de   traduction  en  ecrivant  a
       <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
       paquet manpages-fr.

       Vous  pouvez  toujours avoir acces a la version anglaise de ce document
       en utilisant la commande << man -L C <section> <page_de_man> >>.