GETRLIMIT(2)

NOM
getrlimit, getrusage, setrlimit - Lire / ecrire les limites d'utilisation des ressources systemes.

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 ecrivent les limites des ressources systemes. resource doit etre l'un des elements suivants :

RLIMIT_CPU    /* Temps CPU en secondes           */
RLIMIT_FSIZE    /* Taille maximale d'un fichier    */
RLIMIT_DATA    /* Taille maximale zone de donnees */
RLIMIT_STACK    /* Taille maximale de la pile      */
RLIMIT_CORE    /* Taille maximale fichier core    */
RLIMIT_RSS    /* Max resident set size */
RLIMIT_NPROC    /* Nombre maximal de processus     */
RLIMIT_NOFILE    /* Nombre maximal fichiers ouverts */

L'element suivant n'est pas implemente sous Linux 1.2.13:

RLIMIT_MEMLOCK    /* Verouillage maximal en memoire  */

Une ressource peut etre illimitee si l'on precise RLIM_INFINITY. RLIMIT_OFILE est le nom "BSD" pour RLIMIT_NOFILE.

La structure rlimit est definie comme suit :

struct rlimit
{
	int	rlim_cur;
	int	rlim_max;
};

getrusage renvoie l'utilisation courante des ressources, pour who correspondant a RUSAGE_SELF ou RUSAGE_CHILDREN.

struct rusage
{
  struct timeval ru_utime; /* Temps utilisateur ecoule         */
  struct timeval ru_stime; /* Temps systeme ecoule             */
  long  ru_maxrss;         /* maximum resident set size */
  long  ru_ixrss;          /* Taille de memoire partagee       */
  long  ru_idrss;          /* Taille des donnees non partagees */
  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'ecritures de blocs      */
  long  ru_msgsnd;         /* Nombre de messages emis          */
  long  ru_msgrcv;         /* Nombre de messages recus         */
  long  ru_nsignals;       /* Nombre de signaux recus          */
  long  ru_nvcsw;          /* Chgmnts de contexte volontaires  */
  long  ru_nivcsw;         /* Chgmnts de contexte involontaires*/
};

VALEUR RENVOYEE
Ces fonctions renvoient 0 si elles reussissent, ou -1 si elles echouent, auquel cas errno contient le code d'erreur.

ERREURS

EINVAL
    getrlimit ou setrlimit est appele avec un mauvais argument resource, ou getrusage est appele avec un mauvais argument who.

EPERM
    Tentative d'utiliser setrlimit() sans etre Super-User pour augmenter ses limites, ou alors le Super-User essaye d'augmenter les limites au-dessus des maxima du noyau.

CONFORMITE
SVr4, BSD 4.3

VOIR AUSSI
ulimit(2), quotactl(2)