|
|
1.1 root 1: .\" Copyright (c) 1980 The Regents of the University of California.
2: .\" All rights reserved.
3: .\"
4: .\" Redistribution and use in source and binary forms are permitted provided
5: .\" that: (1) source distributions retain this entire copyright notice and
6: .\" comment, and (2) distributions including binaries display the following
7: .\" acknowledgement: ``This product includes software developed by the
8: .\" University of California, Berkeley and its contributors'' in the
9: .\" documentation or other materials provided with the distribution and in
10: .\" all advertising materials mentioning features or use of this software.
11: .\" Neither the name of the University nor the names of its contributors may
12: .\" be used to endorse or promote products derived from this software without
13: .\" specific prior written permission.
14: .\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
15: .\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
16: .\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
17: .\"
18: .\" @(#)getrlimit.2 6.6 (Berkeley) 6/23/90
19: .\"
20: .TH GETRLIMIT 2 "June 23, 1990"
21: .UC 4
22: .SH NAME
23: getrlimit, setrlimit \- control maximum system resource consumption
24: .SH SYNOPSIS
25: .ft B
26: .nf
27: #include <sys/time.h>
28: #include <sys/resource.h>
29: .PP
30: .ft B
31: getrlimit(resource, rlp)
32: int resource;
33: struct rlimit *rlp;
34: .PP
35: .ft B
36: setrlimit(resource, rlp)
37: int resource;
38: struct rlimit *rlp;
39: .fi
40: .ft R
41: .SH DESCRIPTION
42: Limits on the consumption of system resources by the current process
43: and each process it creates may be obtained with the
44: .I getrlimit
45: call, and set with the
46: .I setrlimit
47: call.
48: .PP
49: The
50: .I resource
51: parameter is one of the following:
52: .TP 17
53: RLIMIT_CPU
54: the maximum amount of cpu time (in seconds) to be used by
55: each process.
56: .TP 17
57: RLIMIT_FSIZE
58: the largest size, in bytes, of any single file that may be created.
59: .TP 17
60: RLIMIT_DATA
61: the maximum size, in bytes, of the data segment for a process;
62: this defines how far a program may extend its break with the
63: .IR sbrk (2)
64: system call.
65: .TP 17
66: RLIMIT_STACK
67: the maximum size, in bytes, of the stack segment for a process;
68: this defines how far a program's stack segment may be extended.
69: Stack extension is performed automatically by the system.
70: .TP 17
71: RLIMIT_CORE
72: the largest size, in bytes, of a
73: .I core
74: file that may be created.
75: .TP 17
76: RLIMIT_RSS
77: the maximum size, in bytes, to which a process's resident set size may
78: grow. This imposes a limit on the amount of physical memory
79: to be given to a process; if memory is tight, the system will
80: prefer to take memory from processes that are exceeding their
81: declared resident set size.
82: .PP
83: A resource limit is specified as a soft limit and a hard limit. When a
84: soft limit is exceeded a process may receive a signal (for example, if
85: the cpu time or file size is exceeded), but it will be allowed to
86: continue execution until it reaches the hard limit (or modifies
87: its resource limit). The
88: .I rlimit
89: structure is used to specify the hard and soft limits on a resource,
90: .PP
91: .nf
92: .RS
93: .DT
94: struct rlimit {
95: int rlim_cur; /* current (soft) limit */
96: int rlim_max; /* hard limit */
97: };
98: .RE
99: .fi
100: .PP
101: Only the super-user may raise the maximum limits. Other users
102: may only alter
103: .I rlim_cur
104: within the range from 0 to
105: .I rlim_max
106: or (irreversibly) lower
107: .IR rlim_max .
108: .PP
109: An \*(lqinfinite\*(rq value for a limit is defined as RLIM_INFINITY
110: (0x7\&f\&f\&f\&f\&f\&f\&f).
111: .PP
112: Because this information is stored in the per-process information,
113: this system call must be executed directly by the shell if it
114: is to affect all future processes created by the shell;
115: .I limit
116: is thus a built-in command to
117: .IR csh (1).
118: .PP
119: The system refuses to extend the data or stack space when the limits
120: would be exceeded in the normal way: a
121: .I break
122: call fails if the data space limit is reached.
123: When the stack limit is reached, the process receives
124: a segmentation fault (SIGSEGV); if this signal is not
125: caught by a handler using the signal stack, this signal
126: will kill the process.
127: .PP
128: A file I/O operation that would create a file larger that the process'
129: soft limit will cause the write to fail and a signal SIGXFSZ to be
130: generated; this normally terminates the process, but may be caught. When
131: the soft cpu time limit is exceeded, a signal SIGXCPU is sent to the
132: offending process.
133: .SH "RETURN VALUE
134: A 0 return value indicates that the call succeeded, changing
135: or returning the resource limit. A return value of \-1 indicates
136: that an error occurred, and an error code is stored in the global
137: location \fIerrno\fP.
138: .SH "ERRORS
139: The possible errors are:
140: .TP 15
141: [EFAULT]
142: The address specified for \fIrlp\fP is invalid.
143: .TP 15
144: [EPERM] The limit specified to \fIsetrlimit\fP would have
145: raised the maximum limit value, and the caller is not the super-user.
146: .SH SEE ALSO
147: csh(1), quota(2), sigvec(2), sigstack(2)
148: .SH BUGS
149: There should be
150: .I limit
151: and
152: .I unlimit
153: commands in
154: .IR sh (1)
155: as well as in
156: .IR csh.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.