Provided by: manpages-fr-dev_3.32d0.2p4-1_all bug

NOM

       prctl - Opérations 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 invoqué avec un premier paramètre indiquant ce qu'il faut faire, (ses valeurs
       sont  définies  dans  <linux/prctl.h>),  et  des  paramètres   supplémentaires   dont   la
       signification dépend du premier paramètre. Celui-ci peut être :

       PR_CAPBSET_READ (depuis Linux 2.6.25)
              Renvoyer  (en résultat de fonction) 1 si la capacité indiquée par arg2 est présente
              dans la limitation de capacités du thread appelant ou 0 si elle ne l'est  pas.  Les
              constantes  des  capacités  sont définies dans <linux/capability.h>. L'ensemble des
              capacités liées contrôle si le processus peut recevoir la capacité par un  ensemble
              de capacités autorisées pour un fichier lors d'un appel futur à execve(2).

              Si  la  capacité  indiquée  dans  arg2 n'est pas valable, alors l'appel échoue avec
              l'erreur EINVAL.

       PR_CAPBSET_DROP (depuis Linux 2.6.25)
              Si le thread appelant a la capacité CAP_SETPCAP, alors enlever la capacité indiquée
              par arg2 dans l'ensemble de limitation de capacités du thread appelant. Les fils du
              thread appelant hériteront de cette nouvelle limitation de capacités réduite.

              L'appel échoue avec l'erreur EPERM si  le  thread  appelant  n'a  pas  la  capacité
              CAP_SETPCAP ;  ou  avec  l'erreur  EINVAL  si  arg2  ne représente pas une capacité
              correcte ; ou avec l'erreur EINVAL si les capacités de fichier ne sont pas  activée
              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 déterminant si un fichier core est produit  lorsque  le  processus
              reçoit  un  signal dont le comportement par défaut est de produire un fichier core.
              (Normalement cet attribut est validé pour un processus par défaut, mais est  effacé
              à l'exécution d'un programme Set-UID ou Set-GID ainsi que par divers appels système
              manipulant des UID et GID). Dans les noyaux jusqu'à 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 était également autorisée ; elle permettait à un binaire qui ne
              produirait  normalement  pas  de  fichier core d'en créer un uniquement lisible par
              root ;  cette  fonctionnalité  a  été  supprimée  pour  des  raisons  de  sécurité.
              (Consultez aussi la description de /proc/sys/fs/suid_dumpable dans proc(5).)

       PR_GET_DUMPABLE (depuis Linux 2.3.20)
              Renvoyer  (en  résultat  de  fonction)  l'état  actuel de l'attribut de création de
              fichier core du processus appelant.

       PR_SET_ENDIAN (depuis Linux 2.6.18, seulement sur PowerPC)
              Fixer le boutisme (endianness) du processus appelant à la valeur donnée dans  arg2,
              qui  doit  être  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  pointé
              par (int *) arg2.

       PR_SET_FPEMU (depuis Linux 2.4.18, 2.5.9, seulement sur ia64)
              Fixer  les  bits  de contrôle de l'émulation de FPU à arg2. Passer PR_FPEMU_NOPRINT
              pour émuler silencieusement les opérations flottantes, ou PR_FPEMU_SIGFPE  pour  ne
              pas émuler les opérations flottantes, et envoyer SIGFPE.

       PR_GET_FPEMU (depuis Linux 2.4.18, 2.5.9, seulement sur ia64)
              Renvoyer  les bits de contrôle de l'émulation de FPU, dans l'emplacement pointé par
              (int *) arg2.

       PR_SET_FPEXC (depuis Linux 2.4.21, 2.5.32, seulement sur PowerPC)
              Fixer le mode d'exception flottante à 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 zéro, PR_FP_EXC_OVF pour les dépassements de capacité vers
              le haut, PR_FP_EXC_UND pour les dépassements de capacité vers le bas, PR_FP_EXC_RES
              pour les résultats flottants inexacts, PR_FP_EXC_INV pour les opérations flottantes
              invalides,   PR_FP_EXC_DISABLED   pour   désactiver   les   exceptions  flottantes,
              PR_FP_EXC_NONRECOV  pour  le  mode   d'exceptions   asynchrone   non   récupérable,
              PR_FP_EXC_ASYNC pour le mode d'exceptions asynchrone récupérable, PR_FP_EXC_PRECISE
              pour le mode d'exception précis.

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

       PR_SET_KEEPCAPS (depuis Linux 2.2.18)
              Fixer  l'état  de  l'attribut  de  conservation  des  capacités  du  thread   (keep
              capabilities),  qui  détermine  si  l'ensemble des capacités disponibles est effacé
              lorsqu'on modifie les UID réel, effectif et sauvé du thread de  manière  à  ce  que
              tous  soient  non  nuls  alors  qu'auparavant  l'un au moins était nul. Par défaut,
              l'ensemble  des  capacités  disponibles  est  effacé   lorsqu'un   tel   changement
              intervient.  Fixer  l'attribut  de  conservation  des capacités du thread l'empêche
              d'être effacé. arg2 doit valoir 0 (les capacités disponibles sont  effacées)  ou  1
              (capacités   disponibles  conservées).  L'ensemble  des  capacités  effectives  est
              toujours effacé lorsqu'un tel changement intervient, quelle que soit la  valeur  de
              l'attribut  de  conservation  des capacités. Cet attribut est remis à zéro pour les
              appels ultérieurs à execve(2).

       PR_GET_KEEPCAPS (depuis Linux 2.2.18)
              Renvoyer (en résultat de fonction) l'état actuel de l'attribut de conservation  des
              capacités du thread appelant.

       PR_SET_NAME (depuis Linux 2.6.9)
              Fixer  le nom du processus appelant, en utilisant la valeur de l'emplacement pointé
              par (char *) arg2. Le nom peut avoir jusqu'à 16 octets de long et doit être terminé
              par un caractère nul s'il est plus petit.

       PR_GET_NAME (depuis Linux 2.6.11)
              Renvoyer  le nom du processus appelant, dans le tampon pointé par (char *) arg2. Le
              tampon doit être suffisamment grand pour contenir jusqu'à  16  octets ;  la  chaîne
              sera terminée par un caractère nul si elle est plus petite.

       PR_SET_PDEATHSIG (depuis Linux 2.1.57)
              Configurer le signal de mort du père du processus appelant avec la valeur arg2 (qui
              peut être un numéro de signal dans l'intervalle 1..maxsig, ou être nul pour effacer
              le  signal). Il s'agit du numéro du signal que le processus appelant recevra si son
              père se termine. Cette valeur est effacée 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 père, dans l'emplacement
              pointé par (int *) arg2.

       PR_SET_SECCOMP (depuis Linux 2.6.23)
              Configurer   le   mode  de  traitement  sécurisé  pour  le  thread  appelant.  Dans
              l'implémentation actuelle, arg2 doit valoir 1. Quand le mode de traitement sécurisé
              a  été  mis  à  1,  les  seuls  appels  système permis pour le thread sont read(2),
              write(2), _exit(2) et sigreturn(2). Les autres appels système provoque la réception
              d'un signal SIGKILL. Le mode de traitement sécurisé est utile pour les applications
              de traitement numérique qui peuvent avoir besoin  d'exécuter  des  instructions  ne
              provenant  pas  d'une  source  de confiance, lues à partir d'un tuyau (« pipe ») ou
              d'une socket. Cette opération n'est disponible que si le noyau a été configuré avec
              l'option CONFIG_SECCOMP activée.

       PR_GET_SECCOMP (depuis Linux 2.6.23)
              Renvoyer le mode de traitement sécurisé du thread appelant. Ce n'est pas très utile
              avec l'implémentation actuelle (le mode vaut toujours 1), mais pourrait être  utile
              dans  le  future  pour  d'autres  modes :  si  l'appelant n'est pas dans un mode de
              traitement sécurisé, cette opération renvoie 0 ; si l'appelant est dans le mode  de
              traitement  sécurisé, alors l'appel prctl() provoquera l'envoie d'un signal SIGKILL
              au processus. Cette opération n'est disponible que si le noyau a été configuré avec
              l'option CONFIG_SECCOMP activée.

       PR_SET_SECUREBITS (depuis Linux 2.6.26)
              Configurer  l'attribut  « securebits »  du  thread appelant à la valeur fournie par
              arg2. Consultez capabilities(7).

       PR_GET_SECUREBITS (depuis Linux 2.6.26)
              Renvoyer (en résultat de fonction) l'état actuel de  l'attribut  « securebits »  du
              thread appelant. Consultez capabilities(7).

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

       PR_GET_TIMING (depuis Linux 2.6.0-test4)
              Renvoyer  (en  résultat de fonction) quelle méthode de mesure du temps du processus
              est utilisée actuellement.

       PR_SET_TSC (depuis Linux 2.6.26, seulement sur x86)
              Configurer l'état de l'attribut qui indique si le compteur d'horodatage  peut  être
              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  pointé  par  (int *) arg2, l'état de l'attribut qui
              indique si le compteur d'horodatage peut être 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 contrôle pour
              les accès non alignés à arg2. La valeur PR_UNALIGN_NOPRINT signifie que  les  accès
              non   alignés   en   espace   utilisateurs   sont   silencieusement   corrigés,  et
              PR_UNALIGN_SIGBUS cause l'envoi de SIGBUS lors d'un accès non aligné.

       PR_GET_UNALIGN
              (Consultez  PR_SET_UNALIGN  pour  les  informations  sur  les   versions   et   les
              architectures)   Renvoyer  les  bits  de  contrôle  des  accès  non  alignés,  dans
              l'emplacement pointé par (int *) arg2.

       PR_MCE_KILL (depuis Linux 2.6.32)
              Fixer la politique de suppression de mémoire corrompue de la machine pour le thread
              actuel.  Si  arg2  vaut  PR_MCE_KILL_CLEAR,  effacer la politique de suppression de
              mémoire corrompue et utiliser la valeur par défaut du système (qui est définie dans
              /proc/sys/vm/memory_failure_early_kill,    consultez   proc(5)).   Si   arg2   vaut
              PR_MCE_KILL_SET,  utiliser  une  politique  de  suppression  de  mémoire  corrompue
              spécifique  au  thread.  Dans  ce  cas,  arg3 définit si la politique est immediate
              (early kill avec PR_MCE_KILL_EARLY), différée (late kill avec PR_MCE_KILL_LATE), ou
              la  valeur  par  défaut du système (PR_MCE_KILL_DEFAULT). Une suppression immédiate
              signifie que la tâche reçoit  un  signal  SIGBUS  dès  que  la  corruption  mémoire
              matérielle  est  détectée à l'intérieur de son espace d'adressage. En mode retardé,
              le processus n'est tué  que  lorsqu'il  accède  à  une  page  corrompue.  Consultez
              sigaction(2)  pour  plus  d'informations  sur le signal SIGBUS. Cette politique est
              héritée par les fils. Les arguments restants de prctl(), non utilisés, doivent être
              mis à zéro pour préparer la future compatibilité.

       PR_MCE_KILL_GET (depuis Linux 2.6.32)
              Renvoyer  la  politique  actuelle  (par  processus)  de  suppression  des processus
              empoisonnés. Tous les arguments non utilisés de prctl()  doivent être nuls.

VALEUR RENVOYÉE

       En cas de  réussite,  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 décrites ci-dessus. Toute autre  valeur  d'option  renvoie  0en  cas  de
       réussite. En cas d'échec, -1 est renvoyé 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
              utilisés 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 été configuré avec
              CONFIG_SECCOMP.

       EPERM  option  vaut  PR_SET_SECUREBITS  et l'appelant n'a pas la capacité CAP_SETPCAP ou a
              essayé d'enlever un attribut de « verrouillage » ou a  essayer  de  positionner  un
              attribut  pour  lequel  l'attribut  de  verrouillage  était  positionné  (consultez
              capabilities(7)).

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

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

VERSIONS

       L'appel système prctl() a été introduit dans Linux 2.1.57.

CONFORMITÉ

       Cet  appel  système  est  spécifique  à  Linux.  IRIX  dispose  d'un appel système prctl()
       (également 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, vérifier si un  processus  est
       bloqué, lire ou fixer la taille des piles,...

VOIR AUSSI

       signal(2), core(5)

COLOPHON

       Cette  page  fait partie de la publication 3.32 du projet man-pages Linux. Une description
       du projet et des  instructions  pour  signaler  des  anomalies  peuvent  être  trouvées  à
       l'adresse <URL:http://www.kernel.org/doc/man-pages/>.

TRADUCTION

       Depuis    2010,    cette   traduction   est   maintenue   à   l'aide   de   l'outil   po4a
       <URL:http://po4a.alioth.debian.org/> par l'équipe 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'équipe  francophone  de
       traduction de Debian (2006-2009).

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

       Vous  pouvez  toujours  avoir  accès  à la version anglaise de ce document en utilisant la
       commande « man -L C <section> <page_de_man> ».