Loading

NOM

       getpriority,  setpriority - Lire/é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);

       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 fixée 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() fixe 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 fixer la priorité en‐dehors
              de  la  plage  permise  par  la  limite  souple  RLIMIT_NICE  du
              processus cible ; voir 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>).

VOIR AUSSI

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

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