Linux |
CentOS 4.8 |
|
![]() |
setrlimit(2) |
![]() |
|
getrlimit, getrusage, setrlimit − Lire / écrire les limites d’utilisation des ressources systèmes. |
|
#include <sys/time.h> int getrlimit (int resource, struct
rlimit *rlim); |
|
getrlimit et setrlimit lisent ou écrivent les limites des ressources systèmes. resource doit être l’un des éléments suivants : |
|
RLIMIT_CPU |
/* Temps CPU en secondes */ |
|||
|
RLIMIT_FSIZE |
/* Taille maximale d’un fichier */ |
|||
|
RLIMIT_DATA |
/* Taille maximale zone de données */ |
|||
|
RLIMIT_STACK |
/* Taille maximale de la pile */ |
|||
|
RLIMIT_CORE |
/* Taille maximale fichier core */ |
|||
|
RLIMIT_RSS |
/* Taille résidente maximale */ |
|||
|
RLIMIT_NPROC |
/* Nombre maximal de processus */ |
|||
|
RLIMIT_NOFILE |
/* Nombre maximal fichiers ouverts */ |
|||
|
RLIMIT_MEMLOCK |
/* Verrouillage maximal en mémoire */ |
|
Une ressource peut être illimitée si l’on précise RLIM_INFINITY. RLIMIT_OFILE est le nom "BSD" pour RLIMIT_NOFILE. La structure rlimit est définie comme suit : |
struct rlimit {
|
|
rlim_t |
rlim_cur; |
|||
|
rlim_t |
rlim_max; |
|
}; |
|
Sous Linux 2.2, rlim_t est équivalent à un long int. getrusage renvoie l’utilisation courante des ressources, pour who correspondant à RUSAGE_SELF, RUSAGE_CHILDREN, ou RUSAGE_BOTH correspondant aux ressources consommées respectivement par le processus appelant, l’ensemble des processus fils terminés, ou la somme de ces deux statistiques. |
struct rusage {
struct timeval ru_utime; /* Temps utilisateur écoulé */
struct timeval ru_stime; /* Temps système écoulé */
long ru_maxrss; /* Taille résidente maximale */
long ru_ixrss; /* Taille de mémoire partagée */
long ru_idrss; /* Taille des données non partagées */
long ru_isrss; /* Taille de pile */
long ru_minflt; /* Demandes de pages */
long ru_majflt; /* Nombre de fautes de pages */
long ru_nswap; /* Nombre de swaps */
long ru_inblock; /* Nombre de lectures de blocs */
long ru_oublock; /* Nombre d’écritures de blocs */
long ru_msgsnd; /* Nombre de messages émis */
long ru_msgrcv; /* Nombre de messages reçus */
long ru_nsignals; /* Nombre de signaux reçus */
long ru_nvcsw; /* Chgmnts de contexte volontaires */
long ru_nivcsw; /* Chgmnts de contexte involontaires*/
};
|
|
Ces fonctions renvoient 0 si elles réussissent, ou −1 si elles échouent, auquel cas errno contient le code d’erreur. |
|
EFAULT |
rlim ou usage pointent en dehors de l’espace |
|
d’adressage disponible. |
|
EINVAL |
getrlimit ou setrlimit est appelé avec un mauvais argument resource, ou getrusage est appelé avec un mauvais argument who. |
||
|
EPERM |
Tentative d’utiliser setrlimit() sans être Super−User pour augmenter ses limites, ou alors le Super−User essaye d’augmenter les limites au-dessus des maxima du noyau. |
|
SVr4, BSD 4.3 |
|
L’inclusion de <sys/time.h> n’est plus obligatoire mais améliore la portabilité. (En fait, struct timeval est définie dans <sys/time.h>). Les structures ci-dessous sont extraites de BSD 4.3 Reno. Tous les champs ne sont pas significatifs sous Linux. Actuellement (Linux 2.4) seuls les champs ru_utime, ru_stime, ru_minflt, ru_majflt, et ru_nswap sont remplis. |
|
quotactl(2), ulimit(3) |
|
Christophe Blaess, 1997. |
![]() |
setrlimit(2) | ![]() |