GETRLIMIT

NAME
SYNOPSIS
DESCRIPTION
RETURN VALUE
ERRORS
CONFORMING TO
SEE ALSO

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)