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