Provided by: manpages-fr-dev_4.19.0-7_all bug

NOM

       getpriority, setpriority - Lire et écrire la priorité d'ordonnancement du processus

BIBLIOTHÈQUE

       Bibliothèque C standard (libc, -lc)

SYNOPSIS

       #include <sys/resource.h>

       int getpriority(int which, id_t who);
       int setpriority(int which, id_t who, int prio);

DESCRIPTION

       La  priorité  d'ordonnancement  du  processus, du groupe de processus ou de l'utilisateur,
       comme précisé dans which et who est lue avec l'appel getpriority() et définie avec l'appel
       setpriority().  L'attribut  du  processus  concerné par ces appels système est le même que
       celui géré par nice(2) (appelé aussi la valeur « de politesse »).

       La valeur de which doit être PRIO_PROCESS, PRIO_PGRP ou PRIO_USER, et who  est  interprété
       en  fonction  de which (un ID de processus pour PRIO_PROCESS, un ID de groupe de processus
       pour PRIO_PGRP et un ID d'utilisateur pour PRIO_USER). Une valeur nulle pour  who  indique
       (respectivement)  le  processus  appelant, le groupe de processus du processus appelant ou
       l'UID réel du processus appelant.

       Le paramètre prio est  une  valeur  sur  l'intervalle  -20  à  19  (mais  voir  les  NOTES
       ci-dessous),  où -20 est la priorité la plus élevée et 19 celle la plus basse. Les valeurs
       pour définir une priorité en dehors de cet intervalle sont silencieusement  ramenées  dans
       l'intervalle.  La  priorité  par  défaut  est  0 ;  les valeurs les plus basses donnent au
       processus une priorité d'ordonnancement plus élevée.

       La fonction getpriority() renvoie la plus haute priorité (la plus basse valeur  numérique)
       dont  bénéficie  l'un  des  processus  indiqué.  La  fonction  setpriority() positionne la
       priorité des processus indiqués à la valeur fournie.

       Traditionnellement, seul un processus privilégié pouvait diminuer la valeur de  courtoisie
       (c'est-à-dire   augmenter  la  priorité).  Mais  depuis  Linux 2.6.12,  un  processus  non
       privilégié peut diminuer la valeur de courtoisie d'un processus  cible  ayant  une  limite
       souple RLIMIT_NICE convenable ; voir getrlimit(2) pour des détails.

VALEUR RENVOYÉE

       S'il  réussit,  setpriority() renvoie la valeur de courtoisie du thread appelant, qui peut
       être un nombre négatif. En cas d'erreur, il renvoie -1 et positionne errno  pour  indiquer
       l'erreur.

       Puisqu'un  appel  à  getpriority() peut tout à fait renvoyer la valeur -1, il faut effacer
       errno avant l'appel afin de vérifier si -1 indique une erreur ou une priorité légitime.

       S'il réussit, setpriority() renvoie 0. En cas d'erreur, il renvoie -1 et positionne  errno
       pour indiquer l'erreur.

ERREURS

       EACCES L'appelant  a tenté de définir une valeur de politesse plus basse (c'est-à-dire une
              priorité de processus plus élevée) mais il n'a pas les droits requis  (sur  Linux :
              il n'a pas la capacité CAP_SYS_NICE).

       EINVAL which n'était ni PRIO_PROCESS, ni PRIO_PGRP, ni PRIO_USER.

       EPERM  Un  processus  correspond  bien aux valeurs indiquées, mais ni l'UID réel, ni l'UID
              effectif de l'appelant ne correspondent à l'UID effectif de ce processus,  et  (sur
              les systèmes Linux l'appelant n'a pas la capacité CAP_SYS_NICE). Voir les NOTES ci‐
              dessous.

       ESRCH  Aucun processus ne correspond aux valeurs de which et who indiquées.

STANDARDS

       POSIX.1-2001, POSIX.1-2008, SVr4, 4.4BSD (ces interfaces sont apparues  pour  la  première
       fois dans 4.2BSD).

NOTES

       Pour plus de détails sur la valeur de courtoisie, voir sched(7).

       Remarque :  l'ajout  de  la  fonctionnalité  « autogroup »  à Linux 2.6.38 signifie que la
       valeur de courtoisie n'a plus son effet traditionnel  dans  de  nombreuses  circonstances.
       Pour des détails, voir sched(7).

       Un  enfant  créé avec fork(2) hérite de la valeur de politesse de son parent. La valeur de
       politesse est préservée au travers d'un execve(2).

       Les détails concernant la condition d'erreur EPERM dépendent du  système.  La  description
       ci‐dessus concerne ce que dit POSIX.1-2001, et qui semble être suivi par tous les systèmes
       de type System V. Les noyaux Linux avant Linux 2.6.12 demandent que l'UID réel ou effectif
       de l'appelant correspondent à l'UID réel du processus who (et non pas à son UID effectif).
       Linux 2.6.12 et suivants demandent que l'UID effectif de l'appelant  corresponde  à  l'UID
       réel ou effectif du processus who. Tous les systèmes de type BSD (SunOS 4.1.3, Ultrix 4.2,
       BSD 4.3, FreeBSD 4.3, OpenBSD-2.5, ...) se comportent de la même manière que Linux  2.6.12
       et les suivants.

   différences entre bibliothèque C et noyau
       L'appel  système getpriority renvoie les valeurs de courtoisie traduites dans l'intervalle
       40..1, puisqu'une valeur  négative  renvoyée  serait  interprétée  comme  une  erreur.  La
       fonction  enveloppe de la glibc autour de getpriority() traduit la valeur en sens inverse,
       selon la formule unice = 20 - knice  (ainsi,  l'intervalle  40..1  renvoyé  par  le  noyau
       correspond à celui -20..19 vu depuis l'espace utilisateur).

BOGUES

       Selon  la  norme  POSIX,  la  valeur  de  politesse  est définie à l'échelle du processus.
       Cependant, les threads POSIX sont actuellement implémentés dans Linux/NPTL de telle  sorte
       que  la  valeur  de  politesse  est  un  attribut du thread : différents threads d'un même
       processus peuvent avoir des valeurs de politesse différentes. Les  applications  portables
       doivent  donc  éviter  de s'appuyer sur cette propriété de Linux, qui devrait, à l'avenir,
       être mise en conformité avec les normes.

VOIR AUSSI

       nice(1), renice(1), fork(2), capabilities(7), sched(7)

       Documentation/scheduler/sched-nice-design.txt  dans   les   sources   du   noyau   (depuis
       Linux 2.6.23)

TRADUCTION

       La  traduction  française  de  cette  page  de  manuel  a  été créée par Christophe Blaess
       <https://www.blaess.fr/christophe/>, Stéphan  Rafin  <stephan.rafin@laposte.net>,  Thierry
       Vignaud  <tvignaud@mandriva.com>,  François Micaux, Alain Portal <aportal@univ-montp2.fr>,
       Jean-Philippe   Guérard   <fevrier@tigreraye.org>,   Jean-Luc   Coulon   (f5ibh)    <jean-
       luc.coulon@wanadoo.fr>,    Julien    Cristau    <jcristau@debian.org>,    Thomas   Huriaux
       <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin
       Duneau  <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis
       Barbier  <barbier@debian.org>,  David  Prévot   <david@tilapin.org>,   Cédric   Boutillier
       <cedric.boutillier@gmail.com>,  Frédéric  Hantrais  <fhantrais@gmail.com> et Jean-Philippe
       MENGUAL <jpmengual@debian.org>

       Cette traduction est une documentation libre ; veuillez vous reporter  à  la  GNU  General
       Public   License   version 3  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  concernant  les
       conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un
       message à ⟨debian-l10n-french@lists.debian.org⟩.