Manpages

Manpage of GETRLIMIT

GETRLIMIT

Section: Linux Programmer's Manual (2)
Updated: 2001-05-04
Index
Return to Main Contents
 

NAME

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

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)


 

Index

NAME
SYNOPSIS
DESCRIPTION
RETURN VALUE
ERRORS
CONFORMING TO
NOTE
SEE ALSO

This document was created by man2html, using the manual pages.
Time: 16:03:34 GMT, February 24, 2018