Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

setrlimit(2) [ultrix man page]

getrlimit(2)							System Calls Manual						      getrlimit(2)

Name
       getrlimit, setrlimit - control maximum system resource consumption

Syntax
       #include <sys/time.h>
       #include <sys/resource.h>

       getrlimit(resource, rlp)
       int resource;
       struct rlimit *rlp;

       setrlimit(resource, rlp)
       int resource;
       struct rlimit *rlp;

Description
       Limits on the consumption of system resources by the current process and each process it creates can be obtained with the call and set with
       the call.

       The resource parameter is one of the following:

       RLIMIT_CPU	the maximum amount of cpu time (in milliseconds) to be used by each process.

       RLIMIT_FSIZE	the largest size, in bytes, of any single file that may be created.

       RLIMIT_DATA	the maximum size, in bytes, of the data segment for a process.	This limit defines how far a program can extend its  break
			with the system call.

       RLIMIT_STACK	the  maximum size, in bytes, of the stack segment for a process.  This limit defines how far a program's stack segment can
			be extended, either automatically by the system or explicitly by a user, with the system call.

       RLIMIT_CORE	the largest size, in bytes, of a core file that may be created.

       RLIMIT_RSS	the maximum size, in bytes, to which a process's resident set size may grow when there is a shortage of free physical mem-
			ory.   Exceeding  this	limit  when  free physical memory is in short supply results in an unfavorable scheduling priority
			being assigned to the process.

       A resource limit is specified as a soft limit and a hard limit.	When a soft limit is exceeded, a process may receive a signal  (for  exam-
       ple,  if  the cpu time is exceeded), but it will be allowed to continue execution until it reaches the hard limit (or modifies its resource
       limit).	The system uses just the soft limit field of the resources RLIMIT_CORE and RLIMIT_RSS. The rlimit structure is used to specify the
       hard and soft limits on a resource, as shown:
       struct rlimit {
	    int  rlim_cur; /* current (soft) limit */
	    int  rlim_max; /* hard limit */
       };

       Only  the  superuser  may  raise  the maximum limits.  Other users may alter rlim_cur within the range from 0 to rlim_max or (irreversibly)
       lower rlim_max.

       An "infinite" value for a limit is defined as RLIM_INFINITY (0x7fffffff).

       Because this information is stored in the per-process information, this system call must be executed directly by the  shell  if	it  is	to
       affect all future processes created by the shell; limit is thus a built-in command to

       The  system  refuses  to extend the data or stack space when the limits would be exceeded in the normal way: a break call fails if the data
       space limit is reached, or the process is killed when the stack limit is reached.  Because the stack cannot be extended, there is no way to
       send a signal.

       A  file	I/O  operation	that  creates  too  large a file causes the SIGXFSZ signal to be generated. This condition normally terminates the
       process, but may be caught.  When the soft cpu time limit is exceeded, a signal SIGXCPU is sent to the process.

Return Values
       A 0 return value indicates that the call succeeded, changing or returning the resource limit.   A return value  of  -1  indicates  that	an
       error occurred, and an error code is stored in the global location errno.

Environment
   System Five
       When your program is compiled in the System V environment, the SIGXFSZ signal is not generated.

Diagnostics
       The call fails under the following conditions:

       [EFAULT]       The address specified for rlp is invalid.

       [EPERM]	      The limit specified to would have raised the maximum limit value, and the caller is not the superuser.

       [EINVAL]       Resource is greater than or equal to RLIM_NLIMITS.

See Also
       csh(1), quota(2)

																      getrlimit(2)
Man Page