limits.h File

Purpose

Defines implementation limits identified by IEEE POSIX 1003.

Description

The limits.h file contains definitions required by the ANSI X3.159-198x Programming Language C Standard and the Institute of Electrical and Electronics Engineers (IEEE) P1003.1 Portable Operating System Interface for Computer Environments (POSIX) standard.

The constants required by the ANSI C Standard describe the sizes of basic data types, as follows:

Symbol Value Explanation
CHAR_BIT 8 Number of bits in a variable of type char
CHAR_MAX 255 Maximum value of a variable of type char
CHAR_MIN 0 Minimum value of a variable of type char
INT_MAX 2,147,483,647 Maximum value of a variable of type int
INT_MIN -2,147,483,648 Minimum value of a variable of type int
LONG_MAX 2,147,483,647 Maximum value of a variable of type long
LONG_MIN -2,147,483,648 Maximum value of a variable of type long
SCHAR_MAX 127 Maximum value of a variable of type signed char
SCHAR_MIN -128 Minimum value of a variable of type signed char
SHRT_MAX 32,767 Maximum value of a variable of type short
SHRT_MIN -32,768 Maximum value of a variable of type short
UCHAR_MAX 255 Maximum value of a variable of type unsigned char
UINT_MAX 4,294,967,295 Maximum value of a variable of type unsigned int
ULONG_MAX 4,294,967,295 Maximum value of a variable of type unsigned long
USHRT_MAX 65,535 Maximum value of a variable of type unsigned short

Run-Time Invariant Values

The first set of values required by POSIX, run-time invariant values, are simple constants determined by basic operating system data-structure sizes.

Symbol Value Explanation
MAX_INPUT 512 No fewer than the number of bytes specified by the MAX_INPUT symbol are allowed in a terminal input queue.
NGROUPS_MAX 2048 Maximum size of the concurrent group list.
PASS_MAX 255 Maximum number of bytes in a password (not including the null terminator).
PID_MAX INT_MAX Maximum value for a processID.
UID_MAX ULONG_MAX Maximum value for a user or group ID.

Run-Time Invariant Values (Possibly Indeterminate)

The second set of run-time invariant values required by POSIX specify values that might vary, especially due to system load, but that can be attained on a lightly loaded system.

Symbol Value Explanation
ARG_MAX 1048576 Maximum length (in bytes) of arguments for the exec subroutine, including the environment. This is a default value that can be configured to a different size.
Note: The argument list and environment are allowed to consume all of the user data segment.
Symbol Value Explanation
CHILD_MAX 40 Maximum number of simultaneous processes per user ID
MAX_CANON 256 Maximum number of bytes in a canonical input line
OPEN_MAX 65534 Maximum number of files that one process can have open at any given time
CHRS_OPEN_MAX 65000 The maximum number of file descriptors to fit in the checkpoint/restart segment.

Path-Name Variable Values

The third set of values required by POSIX, path-name variable values, represent constraints imposed by the file system on file path names. Further constraints on these values might be imposed by the underlying file-system implementation. Use the pathconf or fpathconf subroutine to determine any file-implementation characteristics specific to the underlying file system.

Symbol Value Explanation
NAME_MAX Undefined Maximum number of bytes in a file component name (not including the null terminator)
PATH_MAX 512 Maximum number of bytes in a path name (not including the null terminator)

Run-Time Increasable Values

The fourth set of values required by POSIX specify values that might be increased at run time. Use the pathconf or fpathconf subroutine to determine any file-implementation characteristics specific to the underlying file system.

Item Description
Symbol Value Explanation
LINK_MAX 32,767 Maximum value of a file's link count (SHRT_MAX).
PIPE_BUF 32,768 Maximum number of bytes guaranteed to be written automatically to a pipe.