GETRLIMIT

Section: Linux Programmer's Manual (2)
Updated: 23 July 1993
 

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
{
        int     rlim_cur;
        int     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_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  

SEE ALSO

ulimit(2), quotactl(2)