Linux

CentOS 4.8

getrusage(2)


GETRLIMIT

NOM

getrlimit, getrusage, setrlimit − Lire / écrire les limites d’utilisation des ressources systèmes.

SYNOPSIS

#include <sys/time.h>
#include <sys/resource.h>
#include <unistd.h>

int getrlimit (int resource, struct rlimit *rlim);
int getrusage (int
who, struct rusage *usage);
int setrlimit (int
resource, const struct rlimit *rlim);

DESCRIPTION

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*/
};

VALEUR RENVOYÃE

Ces fonctions renvoient 0 si elles réussissent, ou −1 si elles échouent, auquel cas errno contient le code d’erreur.

ERREURS

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.

CONFORMITÃ

SVr4, BSD 4.3

NOTE

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.

VOIR AUSSI

quotactl(2), ulimit(3)

TRADUCTION

Christophe Blaess, 1997.


getrusage(2)