GNU/Linux |
RedHat 6.2(Zoot) |
|
![]() |
getrlimit(2) |
![]() |
getrlimit, getrusage, setrlimit − get/set resource limits and usage
#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);
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 */ |
};
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
ulimit(2), quotactl(2)
![]() |
getrlimit(2) | ![]() |