getpriority(2) System Calls Manual getpriority(2) NOM getpriority, setpriority - Lire et ecrire la priorite d'ordonnancement du processus BIBLIOTHEQUE Bibliotheque C standard (libc, -lc) SYNOPSIS #include int getpriority(int which, id_t who); int setpriority(int which, id_t who, int prio); DESCRIPTION La priorite d'ordonnancement du processus, du groupe de processus ou de l'utilisateur, comme precise dans which et who est lue avec l'appel getpriority() et definie avec l'appel setpriority(). L'attribut du processus concerne par ces appels systeme est le meme que celui gere par nice(2) (appele aussi la valeur << de politesse >>). La valeur de which doit etre PRIO_PROCESS, PRIO_PGRP ou PRIO_USER, et who est interprete 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 reel du processus appelant. Le parametre prio est une valeur sur l'intervalle -20 a 19 (mais voir les NOTES ci-dessous), ou -20 est la priorite la plus elevee et 19 celle la plus basse. Les valeurs pour definir une priorite en dehors de cet intervalle sont silencieusement ramenees dans l'intervalle. La priorite par defaut est 0 ; les valeurs les plus basses donnent au processus une priorite d'ordonnancement plus elevee. La fonction getpriority() renvoie la plus haute priorite (la plus basse valeur numerique) dont beneficie l'un des processus indique. La fonction setpriority() positionne la priorite des processus indiques a la valeur fournie. Traditionnellement, seul un processus privilegie pouvait diminuer la valeur de courtoisie (c'est-a-dire augmenter la priorite). Mais depuis Linux 2.6.12, un processus non privilegie peut diminuer la valeur de courtoisie d'un processus cible ayant une limite souple RLIMIT_NICE convenable ; voir getrlimit(2) pour des details. VALEUR RENVOYEE S'il reussit, setpriority() renvoie la valeur de courtoisie du thread appelant, qui peut etre un nombre negatif. En cas d'erreur, il renvoie -1 et positionne errno pour indiquer l'erreur. Puisqu'un appel a getpriority() peut tout a fait renvoyer la valeur -1, il faut effacer errno avant l'appel afin de verifier si -1 indique une erreur ou une priorite legitime. S'il reussit, setpriority() renvoie 0. En cas d'erreur, il renvoie -1 et positionne errno pour indiquer l'erreur. ERREURS EACCES L'appelant a tente de definir une valeur de politesse plus basse (c'est-a-dire une priorite de processus plus elevee) mais il n'a pas les droits requis (sur Linux : il n'a pas la capacite CAP_SYS_NICE). EINVAL which n'etait ni PRIO_PROCESS, ni PRIO_PGRP, ni PRIO_USER. EPERM Un processus correspond bien aux valeurs indiquees, mais ni l'UID reel, ni l'UID effectif de l'appelant ne correspondent a l'UID effectif de ce processus, et (sur les systemes Linux l'appelant n'a pas la capacite CAP_SYS_NICE). Voir les NOTES ci-dessous. ESRCH Aucun processus ne correspond aux valeurs de which et who indiquees. STANDARDS POSIX.1-2008. HISTORIQUE POSIX.1-2001, SVr4, 4.4BSD (ces interfaces sont apparues pour la premiere fois dans 4.2BSD). NOTES Pour plus de details sur la valeur de courtoisie, voir sched(7). Remarque : l'ajout de la fonctionnalite << autogroup >> a Linux 2.6.38 signifie que la valeur de courtoisie n'a plus son effet traditionnel dans de nombreuses circonstances. Pour des details, voir sched(7). Un enfant cree avec fork(2) herite de la valeur de politesse de son parent. La valeur de politesse est preservee au travers d'un execve(2). Les details concernant la condition d'erreur EPERM dependent du systeme. La description ci-dessus concerne ce que dit POSIX.1-2001, et qui semble etre suivi par tous les systemes de type System V. Les noyaux Linux avant Linux 2.6.12 demandent que l'UID reel ou effectif de l'appelant correspondent a l'UID reel du processus who (et non pas a son UID effectif). Linux 2.6.12 et suivants demandent que l'UID effectif de l'appelant corresponde a l'UID reel ou effectif du processus who. Tous les systemes de type BSD (SunOS 4.1.3, Ultrix 4.2, BSD 4.3, FreeBSD 4.3, OpenBSD-2.5, ...) se comportent de la meme maniere que Linux 2.6.12 et les suivants. Differences entre bibliotheque C et noyau L'appel systeme getpriority renvoie les valeurs de courtoisie traduites dans l'intervalle 40..1, puisqu'une valeur negative renvoyee serait interpretee 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 renvoye par le noyau correspond a celui -20..19 vu depuis l'espace utilisateur). BOGUES Selon la norme POSIX, la valeur de politesse est definie a l'echelle du processus. Cependant, les threads POSIX sont actuellement implementes dans Linux/NPTL de telle sorte que la valeur de politesse est un attribut du thread : differents threads d'un meme processus peuvent avoir des valeurs de politesse differentes. Les applications portables doivent donc eviter de s'appuyer sur cette propriete de Linux, qui devrait, a l'avenir, etre mise en conformite 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 francaise de cette page de manuel a ete creee par Christophe Blaess , Stephan Rafin , Thierry Vignaud , Francois Micaux, Alain Portal , Jean-Philippe Guerard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas Francois , Florentin Duneau , Simon Paillard , Denis Barbier , David Prevot , Cedric Boutillier , Frederic Hantrais et Jean-Philippe MENGUAL Cette traduction est une documentation libre ; veuillez vous reporter a la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITE LEGALE. Si vous decouvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message a . Pages du manuel de Linux 6.9.1 2 mai 2024 getpriority(2)