getrlimit.2 (2010 09)
g
getrlimit(2) getrlimit(2)
NAME
getrlimit(), setrlimit() - control maximum resource consumption
SYNOPSIS
#include <sys/resource.h>
int getrlimit(int resource, struct rlimit *rlp);
int setrlimit(int resource, const struct rlimit *rlp);
DESCRIPTION
Limits on the consumption of a variety of resources by the calling process may be obtained with
getrlimit() and set with setrlimit(). Each call to either
getrlimit() or setrlimit()
identifies a specific resource to be operated upon as well as a resource limit. A resource limit is
represented by an rlimit structure, pointed to by the rlp argument and includes the following
members:
rlim_t rlim_cur; /* Current (soft) limit */
rlim_t rlim_max; /* Hard limit */
The
rlim_cur member specifies the current or soft limit and the
rlim_max member specifies the max-
imum or hard limit. Soft limits may be changed by a process to any value that is less than or equal to the
hard limit. A process may (irreversibly) lower its hard limit to any value that is greater than or equal to
the soft limit. Only a process with appropriate privileges can raise a hard limit. Both hard and soft lim-
its can be changed in a single call to
setrlimit() subject to the constraints described above.
The value
RLIM_INFINITY, defined in
<sys/resource.h>, is considered to be larger than any other
limit value. If a call to
getrlimit() returns RLIM_INFINITY
for a resource, it means the implemen-
tation does not enforce limits on that resource. Specifying
RLIM_INFINITY
as any resource limit value
on a successful call to
setrlimit() inhibits enforcement of that resource limit.
The following resources are defined:
RLIMIT_CORE This is the maximum size of a core file in bytes that may be created by a process.
A limit of 0 will prevent the creation of a core file. If this limit is exceeded, the
writing of a core file will terminate at this size.
RLIMIT_CPU This is the maximum amount of CPU time in seconds used by a process. If this
limit is exceeded, SIGXCPU is generated for the process. The default action is to
kill the process and leave a core file.
RLIMIT_DATA This is the maximum size of a process data segment in bytes. If this limit is
exceeded, the brk(), malloc(), and sbrk() functions will fail with errno
set to ENOMEM. The upper limit is enforced through the tunable maxdsiz.
However setting RLIMIT_DATA to RLIM_INFINITY
will delay the upper limit
enforcement until the resource is allocated for the application.
RLIMIT_FSIZE This is the maximum size of a file in bytes that may be created by a process. A
limit of 0 will prevent the creation of a file. If a write or truncate operation would
cause this limit to be exceeded,
SIGXFSZ is generated for the process. If the pro-
cess is blocking, catching or ignoring SIGXFSZ, continued attempts to increase
the size of a file from end-of-file to beyond the limit will fail with errno set to
[EFBIG].
RLIMIT_NOFILE This is a number one greater than the maximum value that the system may
assign to a newly-created descriptor. If this limit is exceeded, functions that allo-
cate new file descriptors may fail with errno set to [EMFILE]. This limit con-
strains the number of file descriptors that a process may allocate.
RLIMIT_STACK This is the maximum size of a process stack in bytes. The implementation will
not automatically grow the stack beyond this limit. If this limit is exceeded,
SIGSEGV is generated for the process. If the process is blocking or ignoring SIG-
SEGV, or is catching SIGSEGV and has not made arrangements to use an alter-
nate stack, the disposition of SIGSEGV will be set to SIG_DFL before it is gen-
erated. The upper limit is enforced through the tunable maxssiz. However set-
ting RLIMIT_STACK to RLIM_INFINITY will delay the upper limit enforce-
ment until the resource is allocated for the application.
HP-UX 11i Version 3: September 2010 − 1 − Hewlett-Packard Company 1