Provided by: manpages-fr-dev_3.57d1p1-1_all 

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.57 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> ».
Linux 12 février 2013 GETPRIORITY(2)