Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

csh(1csh)

sh(1sh)



GETRLIMIT(2)            COMMAND REFERENCE            GETRLIMIT(2)



NAME
     getrlimit, setrlimit - control maximum system resource
     consumption

SYNOPSIS
     #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 may be obtained with the
     getrlimit call, and set with the setrlimit call.

     Getrlimit returns the limits on the current process in the
     rlimit structure pointed to by rlp; setrlimit uses the
     values in the structure to set the process limits.

     The resource parameter is one of the following, defined in
     <sys/resource.h>:

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

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

     RLIMIT_DATA  The maximum size, in bytes, of the data segment
                  for a process; this defines how far a program
                  may extend its break with the sbrk(2) system
                  call.

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

     RLIMIT_STACK The maximum size, in bytes, of the stack
                  segment for a process; this defines how far a
                  program's stack segment may be extended, either
                  automatically by the system, or explicitly by a
                  user with the sbrk(2) system call.

     RLIMIT_RSS   The maximum size, in bytes, a process's
                  resident set size may grow to.  This imposes a
                  limit on the amount of physical memory to be
                  given to a process; if memory is tight, the



Printed 4/6/89                                                  1





GETRLIMIT(2)            COMMAND REFERENCE            GETRLIMIT(2)



                  system will prefer to take memory from
                  processes which are exceeding their declared
                  resident set size.

     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 example, 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 rlimit
     structure is used to specify the hard and soft limits on a
     resource, defined in <sys/resource.h>:

          struct rlimit {
               long rlim_cur; /* current (soft) limit */
               long rlim_max; /* hard limit */
          };

     Only the super-user may raise the hard limits.  Other users
     may only 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
     RLIMIT_INFINITY (0x7fffffff) in <sys/resource.h>.

     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 csh(1csh).

     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 (since the stack
     cannot be extended, there is no way to send a signal!).

     A file I/O operation which would create a file which is too
     large will cause a signal SIGXFSZ to be generated, this
     normally terminates the process, but may be caught.  When
     the soft cpu time limit is exceeded, a signal SIGXCPU is
     sent to the offending process.

DIAGNOSTICS
     The possible errors are:

     [EFAULT]     The address specified for rlp is invalid.

     [EPERM]      The limit specified to setrlimit would have
                  raised the maximum limit value, and the caller
                  is not the super-user.

     [EINVAL]     The resource argument is not a valid value.




Printed 4/6/89                                                  2





GETRLIMIT(2)            COMMAND REFERENCE            GETRLIMIT(2)



RETURN VALUE
     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.

SEE ALSO
     csh(1csh) and sh(1sh).















































Printed 4/6/89                                                  3



%%index%%
na:360,123;
sy:483,1778;
de:2261,2074;4767,1952;
di:6719,558;
rv:7709,363;
se:8072,175;
%%index%%000000000121

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026