Developer's Daily | Unix by Example |
main | java | perl | unix | dev directory | web log |
getrlimit, getrusage, setrlimit ? get/set resource limits and usage |
#include <sys/time.h> int getrlimit (int resource, 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) |