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