getrlimit,
GETRLIMIT(T)        Linux Programmer's Manual        GETRLIMIT(T)



NAME
       getrlimit,  getrusage, setrlimit - get/set resource limits
       and usage

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  and  setrlimit  get  and  set  resource  limits
       respectively.  resource should be one of:

       RLIMIT_CPU     /* CPU time in seconds */
       RLIMIT_FSIZE   /* Maximum filesize */
       RLIMIT_DATA    /* max data size */
       RLIMIT_STACK   /* max stack size */
       RLIMIT_CORE    /* max core file size */
       RLIMIT_RSS     /* max resident set size */
       RLIMIT_NPROC   /* max number of processes */
       RLIMIT_NOFILE  /* max number of open files */
       RLIMIT_MEMLOCK /* max locked-in-memory address space*/
       RLIMIT_AS      /* address space (virtual memory) limit */

       A   resource  may  unlimited  if  you  set  the  limit  to
       RLIM_INFINITY.  RLIMIT_OFILE   is   the   BSD   name   for
       RLIMIT_NOFILE.

       The rlimit structure is defined as follows :

            struct rlimit {
                 rlim_t    rlim_cur;
                 rlim_t    rlim_max;
            };

       getrusage  returns  the current resource usages, for a who
       of either RUSAGE_SELF or RUSAGE_CHILDREN.  The former asks
       for  resources used by the current process, the latter for
       resources used by those of its children that  have  termi-
       nated and have been waited for.

            struct rusage {
                 struct timeval ru_utime; /* user time used */
                 struct timeval ru_stime; /* system time used */
                 long ru_maxrss;          /* maximum resident set size */
                 long ru_ixrss;      /* integral shared memory size */
                 long ru_idrss;      /* integral unshared data size */
                 long ru_isrss;      /* integral unshared stack size */
                 long ru_minflt;          /* page reclaims */
                 long ru_majflt;          /* page faults */
                 long ru_nswap;      /* swaps */
                 long ru_inblock;         /* block input operations */
                 long ru_oublock;         /* block output operations */
                 long ru_msgsnd;          /* messages sent */
                 long ru_msgrcv;          /* messages received */
                 long ru_nsignals;        /* signals received */
                 long ru_nvcsw;      /* voluntary context switches */
                 long ru_nivcsw;          /* involuntary context switches */
            };

RETURN VALUE
       On  success,  zero is returned.  On error, -1 is returned,
       and errno is set appropriately.

ERRORS
       EFAULT rlim or usage points outside the accessible address
              space.

       EINVAL getrlimit   or  setrlimit  is  called  with  a  bad
              resource, or getrusage is called with a bad who.

       EPERM  A  non-superuser  tries  to  use   setrlimit()   to
              increase  the  soft or hard limit above the current
              hard  limit,  or  a  superuser  tries  to  increase
              RLIMIT_NOFILE above the current kernel maximum.

CONFORMING TO
       SVr4, BSD 4.3

NOTE
       Including  <sys/time.h>  is  not  required these days, but
       increases portability.  (Indeed, struct timeval is defined
       in <sys/time.h>.)

       The  above  struct  was  taken from BSD 4.3 Reno.  Not all
       fields are meaningful under Linux.  Right now (Linux  2.4)
       only  the fields ru_utime, ru_stime, ru_minflt, ru_majflt,
       and ru_nswap are maintained.

SEE ALSO
       quotactl(l), ulimit(t)



Linux                       2001-05-04               GETRLIMIT(T)