GETRLIMIT
NAME SYNOPSIS DESCRIPTION RETURN VALUE ERRORS CONFORMING TO NOTE SEE ALSO
getrlimit, getrusage, setrlimit - get/set resource limits and usage
#include
int getrlimit (int resource__, struct rlimit
int getrusage (int who, struct rusage
int setrlimit (int resource, const struct rlimit *rlim);__
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_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 */ };
On success, zero is returned. On error, -1 is returned, and errno is set appropriately.
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.
SVr4, BSD 4.3
Including is not required these days, but increases portability. (Indeed, struct timeval is defined in .)
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.
6 pages link to setrlimit(2):