Loading

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);

       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é.  (Voir  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,  qui  détermine si les ensembles de capacités effectives
              et disponibles sont effacés  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
              les  ensembles  sont effacés). arg2 doit valoir 0 (les capacités
              sont effacées) ou 1 (capacités  conservées).  Cette  valeur  est
              remise à 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. Voir 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. Voir 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
              (Voir  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.

VALEUR RENVOYÉE

       En  cas de réussite, PR_GET_DUMPABLE, PR_GET_KEEPCAPS, PR_CAPBSET_READ,
       PR_GET_TIMING,  PR_GET_SECUREBITS   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 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é  (voir
              capabilities(7)).

       EPERM  option      vaut       PR_SET_KEEPCAPS       et       l’attribut
              SECURE_KEEP_CAPS_LOCKED   de  l’appelant  est  positionné  (voir
              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 maximum 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.23  du  projet  man-pages
       Linux.  Une description du projet et des instructions pour signaler des
       anomalies      peuvent      être       trouvées       à       l’adresse
       http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Cette  page  de  manuel  a  été  traduite et mise à jour par Christophe
       Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis  par
       Alain  Portal  <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et mise à
       disposition sur http://manpagesfr.free.fr/.

       Les mises à jour et corrections de la version présente dans Debian sont
       directement gérées par Julien Cristau <jcristau@debian.org> et l’équipe
       francophone de traduction de Debian.

       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> ».