SYSCONF(3) | Library Functions Manual | SYSCONF(3)

# NAME

`sysconf` — get configurable system variables

# SYNOPSIS

`#include <unistd.h>`

long
`sysconf`(int name);

# DESCRIPTION

The `sysconf`() function provides a method for applications to determine the current value of a configurable system limit or option variable. The name argument specifies the system variable to be queried. Symbolic constants for each name value are found in the include file `<unistd.h>`.

The available values are as follows:

`_SC_ARG_MAX`
  The maximum bytes of arguments to execve(2) (including the environment).
`_SC_CHILD_MAX`
  The maximum number of simultaneous processes per user ID.
`_SC_CLK_TCK`
  The number of clock ticks per second.
`_SC_NGROUPS_MAX`
  The maximum number of supplemental groups.
`_SC_OPEN_MAX`
  The maximum number of open files per user ID.
`_SC_STREAM_MAX`
  The minimum maximum number of streams that a process may have open at any one time.
`_SC_TZNAME_MAX`
  The minimum maximum number of types supported for the name of a time zone.
`_SC_JOB_CONTROL`
  Returns 1 if job control is available on this system, otherwise -1.
`_SC_SAVED_IDS`
  Returns 1 if saved set-group-ID and saved set-user-ID is available, otherwise -1.
`_SC_VERSION`
  The version of ISO/IEC 9945 (POSIX 1003.1) with which the system attempts to comply.
`_SC_BC_BASE_MAX`
  The maximum ibase/obase values in the bc(1) utility.
`_SC_BC_DIM_MAX`
  The maximum array size in the bc(1) utility.
`_SC_BC_SCALE_MAX`
  The maximum scale value in the bc(1) utility.
`_SC_BC_STRING_MAX`
  The maximum string length in the bc(1) utility.
`_SC_COLL_WEIGHTS_MAX`
  The maximum number of weights that can be assigned to any entry of the LC_COLLATE order keyword in the locale definition file.
`_SC_EXPR_NEST_MAX`
  The maximum number of expressions that can be nested within parentheses by the expr(1) utility.
`_SC_LINE_MAX`
  The maximum length in bytes of a text-processing utility's input line.
`_SC_RE_DUP_MAX`
  The maximum number of repeated occurrences of a regular expression permitted when using interval notation.
`_SC_2_VERSION`
  The version of POSIX 1003.2 with which the system attempts to comply.
`_SC_2_C_BIND`
  Return 1 if the system's C-language development facilities support the C-Language Bindings Option, otherwise -1.
`_SC_2_C_DEV`
  Return 1 if the system supports the C-Language Development Utilities Option, otherwise -1.
`_SC_2_CHAR_TERM`
  Return 1 if the system supports at least one terminal type capable of all operations described in POSIX 1003.2, otherwise -1.
`_SC_2_FORT_DEV`
  Return 1 if the system supports the FORTRAN Development Utilities Option, otherwise -1.
`_SC_2_FORT_RUN`
  Return 1 if the system supports the FORTRAN Runtime Utilities Option, otherwise -1.
`_SC_2_LOCALEDEF`
  Return 1 if the system supports the creation of locales, otherwise -1.
`_SC_2_SW_DEV`
  Return 1 if the system supports the Software Development Utilities Option, otherwise -1.
`_SC_2_UPE`
  Return 1 if the system supports the User Portability Utilities Option, otherwise -1.
`_SC_PAGESIZE`
  The size of a system page in bytes.
`_SC_FSYNC`
  Return 1 if the system supports the File Synchronisation Option, otherwise -1.
`_SC_XOPEN_SHM`
  Return 1 if the system supports the Shared Memory Option, otherwise -1.
`_SC_SEM_NSEMS_MAX`
  The maximum number of semaphores in the system or -1 if the system does not support the Semaphores Option.
`_SC_SEM_VALUE_MAX`
  The maximum value a semaphore may have or -1 if the system does not support the Semaphores Option.
`_SC_PHYS_PAGES`
  The number of pages of physical memory.
`_SC_AVPHYS_PAGES`
  The number of pages of physical memory not currently in use by the system.
`_SC_GETGR_R_SIZE_MAX`
  The maximum size of the data buffer for the `getgrgid_r`() and `getgrnam_r`() functions.
`_SC_GETPW_R_SIZE_MAX`
  The maximum size of the data buffer for the `getpwuid_r`() and `getpwnam_r`() functions.
`_SC_LOGIN_NAME_MAX`
  The maximum length of a login name.
`_SC_THREAD_SAFE_FUNCTIONS`
  The level of support for thread-safe (re-entrant) functions.
`_SC_NPROCESSORS_CONF`
  The number of processors configured.
`_SC_NPROCESSORS_ONLN`
  The number of processors online (capable of running processes).
`_SC_HOST_NAME_MAX`
  The maximum size of a hostname, not counting NULL.
`_SC_MONOTONIC_CLOCK`
  Return the POSIX version of the implementation of the Monotonic Clock option that this system conforms to, or -1 if unavailable.

# RETURN VALUES

If the call to `sysconf`() is not successful, -1 is returned and errno is set appropriately. Otherwise, if the variable is associated with functionality that is not supported, -1 is returned and errno is not modified. Otherwise, the current variable value is returned.

# ERRORS

The `sysconf`() function may fail and set errno for any of the errors specified for the library function sysctl(2). In addition, the following error may be reported:

[`EINVAL`]
  The value of the name argument is invalid.

# SEE ALSO

pathconf(2), sysctl(2)

# STANDARDS

The `sysconf`() function conforms to IEEE Std 1003.1-1988 (“POSIX.1”). The constants `_SC_NPROCESSORS_CONF` and `_SC_NPROCESSORS_ONLN` are not part of the standard, but are provided by many systems.

# HISTORY

The `sysconf`() function first appeared in 4.4BSD.

# BUGS

The value for _SC_STREAM_MAX is a minimum maximum, and required to be the same as ANSI C's FOPEN_MAX, so the returned value is a ridiculously small and misleading number.

August 11, 2019 | Debian