GETRLIMIT(2)

NAME
getrlimit, getrusage, setrlimit - get/set resource limits and usage

SYNOPSIS
#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 ms */
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 */

The following are not yet implemented :

RLIMIT_MEMLOCK /* max locked-in-memory address space*/
RLIMIT_NPROC /* max number of processes */
RLIMIT_OFILE /* max number of open files */

A resource may unlimited if you set the limit to RLIM_INFINITY.

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 " */
};

0 is returned on success, a negative value for error.

ERRORS
-EINVAL is returned if getrlimit(), setrlimit() is called with a bad resource, or getrusage() is called with a bad who.

-EPERM is returned if a non-superuser tries to call setrlimit()

FILES
linux/kernel/sys.c
/usr/include/linux/sys.h
/usr/include/unistd.h
/usr/include/sys/resource.h

SEE ALSO
ulimit(2)