Provided by: manpages-fr-dev_3.65d1p1-1_all bug

NOM

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

SYNOPSIS

       #include <sys/time.h>
       #include <sys/resource.h>

       int getpriority(int which, int who);
       int setpriority(int which, int 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 getpriority() et définit avec setpriority().

       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 de l'appelant ou l'UID réel
       du processus appelant. Prio est une valeur dans l'intervalle -20 à 19 (voir les Notes plus
       bas).  La  priorité  par  défaut  est  0,  les  priorités  les  plus  faibles indiquant un
       ordonnancement le plus favorable.

       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() définit la priorité
       des processus indiqués à la valeur fournie. Seul  le  superutilisateur  peut  diminuer  la
       valeur numérique de la priorité.

VALEUR RENVOYÉE

       Comme  getpriority()  peut  tout à fait renvoyer la valeur -1, il faut effacer la variable
       externe errno avant l'appel afin de vérifier si -1 indique  une  erreur  ou  une  priorité
       légitime. L'appel setpriority() renvoie 0 s'il réussit, ou -1 s'il échoue.

ERREURS

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

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

       De plus setpriority() peut échouer pour les erreurs suivantes :

       EACCES L'appelant  a  tenté  de  diminuer  la  priorité  d'un  processus,  sans  avoir les
              privilèges requis (sous Linux, il s'agit de la capacité CAP_SYS_NICE). Depuis Linux
              2.6.12, cette erreur ne survient que si l'appelant tente de définir la priorité en‐
              dehors de la plage permise par la limite souple RLIMIT_NICE  du  processus  cible ;
              consultez getrlimit(2) pour plus de détails.

       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.

CONFORMITÉ

       SVr4, BSD 4.4 (ces fonctions sont apparues dans BSD 4.2), POSIX.1-2001.

NOTES

       Un fils créé avec fork(2) hérite de la valeur de courtoisie de  son  père.  La  valeur  de
       courtoisie est préservée au travers d'un execve(2).

       L'importance  des  variations  d'ordonnancement  des  processus  suivant  leurs valeurs de
       courtoisies respectives dépend des systèmes UNIX et pour Linux, dépend de  la  version  du
       noyau.  Depuis  le  noyau  2.6.23,  Linux emploie un algorithme rendant plus sensibles les
       variations de courtoisies. Les valeurs de courtoisies élevées (+19) ne laissent  que  très
       peu  de  temps  CPU à un processus si d'autres programmes, plus prioritaires, réclament le
       processeur. Inversement, les valeurs de courtoisie basses (-20)  fournissent  beaucoup  de
       temps CPU aux tâches qui en ont besoin (par exemple, certaines applications audio).

       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  antérieurs  à  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.

       Le véritable intervalle des priorités  varie  suivant  les  versions  du  noyau.  Sur  les
       systèmes  Linux  antérieurs  à  1.3.36, l'intervalle s'étendait de -infini à 15. Depuis la
       version 1.3.43, l'intervalle est -20..19. Dans le noyau, les  valeurs  de  politesse  sont
       représentées  dans  l'intervalle 40..1 (les nombres négatifs sont des codes d'erreurs), et
       ce  sont  ces  valeurs  qui  sont  utilisées  par  les  appels  système  setpriority()  et
       getpriority(). Les routines de la bibliothèque glibc se chargent des conversions entre les
       représentations  dans  le  noyau  et  dans  l'espace  utilisateur  grâce  à   la   formule
       unice = 20 - knice.

       Sur certains systèmes, les valeurs de politesse vont de -20 à 20.

       L'inclusion  de  <sys/time.h>  n'est  plus  obligatoire, mais améliore la portabilité. (En
       fait, <sys/resource.h> définit la structure rusage qui contient des champs de type  struct
       timeval, défini dans <sys/time.h>).

BOGUES

       Selon la norme POSIX, la valeur de courtoisie (nice) 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  courtoisie  est  un attribut du thread : différents threads d'un même
       processus peuvent avoir des valeurs de courtoisie 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)

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

COLOPHON

       Cette  page  fait partie de la publication 3.65 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

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

       Christophe    Blaess    <http://www.blaess.fr/christophe/>   (1996-2003),   Alain   Portal
       <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> ».