getrlimit - get resource limits


#include <sys/time.h> #include <sys/resource.h> #include <unistd.h>

int getrlimit (int resource, struct rlimit *rlim);


getrlimit(2) get 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.


rlim points outside the accessible address space.
getrlimit(2) is called with a bad resource


SVr4, BSD 4.3


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.


quotactl(2), ulimit(3)

This page is a man page (or other imported legacy content). We are unable to automatically determine the license status of this page.