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.

            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_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(2), ulimit(3)


Man(1) output converted with man2html