Date création : 27-03-2008 20:23:44
 Vous êtes dans : GNU/Linux Astuces / Pages man [Section2 - Appels système]
GETPRIORITY
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().
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 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.
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 :
- 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.
- 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.
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 à travers un execve(2).
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
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.
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 <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>).
CONFORMITÉ
SVr4, BSD 4.4 (ces fonctions sont apparues dans BSD 4.2), POSIX.1-2001.
VOIR AUSSI
nice(1), fork(2), capabilities(7), renice(8)
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.
La traduction de cette page de manuel est basée sur les traductions
disponibles sur http://manpagesfr.free.fr/,
mais est gérée par l'équipe francophone de traduction de Debian
au travers de la liste de discussion debian-l10n-french.
Veuillez signaler toute erreur de traduction 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> ».
|