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) |