GETPRIORITY
Section: Manuel du programmeur Linux (2) Updated: 18 juillet 2003 Index
NOM
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ERREURS
NOTES
CONFORMITÉ
VOIR AUSSI
TRADUCTION
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);
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 fixée avec
setpriority.
Which
doit être l'un des éléments
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 à 20 (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 Super-User 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 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
- ESRCH
-
Aucun processus ne correspond aux valeurs de
which
et
who
indiquées.
- EINVAL
-
Which
n'était ni
PRIO_PROCESS,
ni
PRIO_PGRP,
ni
PRIO_USER.
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.
- EACCES
-
Tentative de favoriser un processus sans être Super-User.
NOTES
Les détails concernant la condition d'erreur EPERM dépendent du système.
La description ci-dessus concerne ce que dit SUSv3, et qui semble être suivi
par tous les systèmes de type SysV.
Linux demande que l'UID réel ou effectif de l'appelant correspondent à
l'UID réel du processus who (et non pas à son UID effectif).
Tous les systèmes de type BSD (SunOS 4.1.3, Ultrix 4.2
BSD 4.3, FreeBSD 4.3, OpenBSD-2.5...) demandent que l'UID
effectif de l'appelant corresponde à l'UID réel
ou effectif du processus who.
Le véritable intervalle des priorités varie suivant les versions du noyau.
Sur les systèmes Linux antérieure au 1.3.36 l'intervalle s'étendait de
-infini à 15. Depuis le 1.3.43 il correspond à -20..19, et l'appel-système
getpriority renvoie 40..1 pour ces valeurs (puisque les nombres négatifs
sont des codes d'erreur).
La routine de bibliothèque convertit N en 20-N.
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>).
CONFORMITÉ
SVr4, BSD 4.4 (Cette fonction est apparue dans BSD 4.2).
VOIR AUSSI
TRADUCTION
Christophe Blaess, 1996-2003.
|