getpriority   Début   Suivant   Sommaire   Préc.page.lue   Accueil
Section: Manuel du programmeur Linux (2)
Updated: 29 mai 2008
Sommaire  



NOM   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
getpriority, setpriority - Lire/écrire la priorité d'ordonnancement du processus  



SYNOPSIS   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
#include <sys/time.h>
#include <sys/resource.h>

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




DESCRIPTION   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
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 l'une parmi 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 a bénéficié 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   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
Comme getpriority() peut tout à fait renvoyer la valeur -1, il faut effacer la variable externe errno avant l'appel afin de vérifier si une valeur -1 indique une erreur ou une priorité légitime. L'appel setpriority() renvoie 0 s'il réussit, ou -1 s'il échoue et remplit errno.  



ERREURS   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
EACCES
L'appelant a essayé de diminuer la priorité d'un processus mais il n'avait pas le privilège nécessaire (sous Linux : n'avait pas la capacité CAP_SYS_NICE). Depuis Linux 2.6.12, cette erreur ne survient que si l'appelant tente de configurer la priorité du processus à une valeur hors de l'intervalle de la limite de ressources logicielles RLIMIT_NICE du processus cible ; voir getrlimit(2) pour plus de détails.
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 :

EPERM
Un processus correspond bien aux valeurs indiquées, mais ni l'UID réel, ni l'UID effectif de l'appelant ne lui correspondent et il n'est pas privilégié (sous Linux, il n'a pas la capacité CAP_SYS_NICE). Voir la section NOTES plus loin.
 



CONFORMITÉ   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
SVr4, BSD 4.4 (Cette fonction est apparue dans BSD 4.2), POSIX.1-2001.  



NOTES   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
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 à travers un execve(2).

L'importance des variations d'ordonnacement des processus suivant leurs valeurs de courtoisies respectives dépend des systèmes Unix et pour Linux, dépend 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 Système V. Les noyaux Linux avant la version 2.6.12 demandaient 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 suivants.

Le véritable intervalle des priorités varie suivant les versions du noyau. Sur les systèmes Linux antérieurs au 1.3.36, l'intervalle s'étendait de -infini à 15. Depuis le 1.3.43, il correspond à -20..19. Dans le noyau, les valeurs de priorité sont actuellement représentées en utilisant l'intervalle 40..1 correspondant (puisque les nombres négatifs sont des codes d'erreur) et ces valeurs sont utilisées par les appels système setpriority() et getpriority(). Les fonctions enveloppe de la bibliothèque pour ces appels système gèrent les translations entre les représentations noyau et espace utilisateur de la valeur de priorité suivant la formule prio_user = 20 - prio_noyau.

L'inclusion <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 <sys/time.h>).  




VOIR AUSSI   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
nice(1), fork(2), capabilities(7), renice(8)

Documentation/scheduler/sched-nice-design.txt dans l'arborescence des sources du noyau (depuis Linux 2.6.23).  




TRADUCTION   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil

Ce document est une traduction réalisée par Christophe Blaess <http://www.blaess.fr/christophe/> le 11 octobre 1996 et révisée le 6 juin 2008.

L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 2 getpriority ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.


 



Sommaire   Début   Suivant   Sommaire   Préc.page.lue   Accueil
NOM
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ERREURS
CONFORMITÉ
NOTES
VOIR AUSSI
TRADUCTION

Table des mots clés   Début   Suivant   Sommaire   Préc.page.lue   Accueil
EACCESERREURS
EINVALERREURS
EPERMERREURS
ESRCHERREURS



Ce document a été créé par man2html suivi de man2html.pl, le 17/10/2008 17:49:28, en utilisant les pages de 'man'.
 

Valid HTML 4.01 Transitional