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

# NAME

`sysconf` — get configurable system variables

# LIBRARY

Standard C Library (libc, -lc)

# SYNOPSIS

`#include <unistd.h>`

long
`sysconf`(int name);

# DESCRIPTION

This interface is defined by IEEE Std 1003.1-1988 (“POSIX.1”). A far more complete interface is available using sysctl(3).

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 argument to execve(2).
`_SC_ATEXIT_MAX`
  The maximum number of functions that may be registered with atexit(3).
`_SC_BARRIERS`
  The version of IEEE Std 1003.1 (“POSIX.1”) and its Barriers option to which the system attempts to conform, otherwise -1.
`_SC_CLOCK_SELECTION`
  Return the POSIX version the implementation of the Clock Selection option on this system conforms to, or -1 if unavailable.
`_SC_CHILD_MAX`
  The maximum number of simultaneous processes per user id.
`_SC_CLK_TCK`
  The number of clock ticks per second.
`_SC_FSYNC`
  Return 1 if the File Synchronization option is available on this system, otherwise -1.
`_SC_HOST_NAME_MAX`
  The maximum size of a hostname, including the terminating NUL.
`_SC_IOV_MAX`
  The maximum number of iovec structures that a process has available for use with preadv(2), pwritev(2), readv(2), recvmsg(2), sendmsg(2) or writev(2).
`_SC_JOB_CONTROL`
  Return 1 if job control is available on this system, otherwise -1.
`_SC_LOGIN_NAME_MAX`
  Returns the size of the storage required for a login name, in bytes, including the terminating NUL.
`_SC_MAPPED_FILES`
  Return 1 if the Memory Mapped Files option is available on this system, otherwise -1.
`_SC_MEMLOCK`
  Return 1 if the Process Memory Locking option is available on this system, otherwise -1.
`_SC_MEMLOCK_RANGE`
  Return 1 if the Range Memory Locking option is available on this system, otherwise -1.
`_SC_MEMORY_PROTECTION`
  Return 1 if the Memory Protection option is available on this system, otherwise -1.
`_SC_MONOTONIC_CLOCK`
  Return the POSIX version the implementation of the Monotonic Clock option on this system conforms to, or -1 if unavailable.
`_SC_NGROUPS_MAX`
  The maximum number of supplemental groups.
`_SC_OPEN_MAX`
  The maximum number of open files per process.
`_SC_PAGESIZE`
  The size of a system page in bytes.
`_SC_PASS_MAX`
  The maximum length of the password, not counting the terminating NUL.
`_SC_READER_WRITER_LOCKS`
  The version of IEEE Std 1003.1 (“POSIX.1”) and its Read-Write Locks option to which the system attempts to conform, otherwise -1.
`_SC_REGEXP`
  Return 1 if POSIX regular expressions are available on this system, otherwise -1.
`_SC_SEMAPHORES`
  The version of IEEE Std 1003.1 (“POSIX.1”) and its Semaphores option to which the system attempts to conform, otherwise -1.
`_SC_SEM_NSEMS_MAX`
  The maximum number of semaphores that one process can have open at a time, otherwise -1.
`_SC_SHELL`
  Return 1 if POSIX shell is available on this system, otherwise -1.
`_SC_SPIN_LOCKS`
  The version of IEEE Std 1003.1 (“POSIX.1”) and its Spin Locks option to which the system attempts to conform, otherwise -1.
`_SC_STREAM_MAX`
  The minimum maximum number of streams that a process may have open at any one time.
`_SC_SYMLOOP_MAX`
  The maximum number of symbolic links that may be expanded in a path name.
`_SC_SYNCHRONIZED_IO`
  Return 1 if the Synchronized I/O option is available on this system, otherwise -1.
`_SC_THREADS`
  The version of IEEE Std 1003.1 (“POSIX.1”) and its Threads option to which the system attempts to conform, otherwise -1.
`_SC_THREAD_PRIO_PROTECT`
  System supports the priority ceiling protocol for POSIX threads.
`_SC_TIMERS`
  The version of IEEE Std 1003.1 (“POSIX.1”) and its Timers option to which the system attempts to conform, otherwise -1.
`_SC_CPUTIME`
  The clockID `CLOCK_PROCESS_CPUTIME_ID` is supported, otherwise -1.
`_SC_THREAD_CPUTIME`
  The clockID `CLOCK_THREAD_CPUTIME_ID` is supported, otherwise -1.
`_SC_DELAYTIMER_MAX`
  The maximum number of overrun for a specific timer, otherwise -1.
`_SC_TZNAME_MAX`
  The minimum maximum number of bytes supported for the name of a timezone (that is, a timezone abbreviation).
`_SC_SAVED_IDS`
  Returns 1 if saved set-group 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_XOPEN_SHM`
  Return 1 if the X/Open Portability Guide Issue 4, Version 2 (“XPG4.2”) Shared Memory option is available on this system, otherwise -1.

  Availability of the Shared Memory option depends on the `SYSVSHM` kernel option.

`_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 parenthesis 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_GETGR_R_SIZE_MAX`
  The minimum size of the buffer passed to getgrgid_r(3) and getgrnam_r(3).
`_SC_GETPW_R_SIZE_MAX`
  The minimum size of the buffer passed to getpwnam_r(3) and getpwuid_r(3).
`_SC_NPROCESSORS_CONF`
  The number of processors configured.
`_SC_NPROCESSORS_ONLN`
  The number of processors online (capable of running processes).
`_SC_PHYS_PAGES`
  The total number of pages of physical memory. See `_SC_PAGESIZE` for the system page size.
`_SC_AVPHYS_PAGES`
  The number of available pages of physical memory. See `_SC_PAGESIZE` for the system page size.
`_SC_TIMER_MAX`
  The number of timers available for timer_create(2). This is also known as `_POSIX_TIMER_MAX`.

# 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 functions sysctl(3). In addition, the following error may be reported:

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

# SEE ALSO

getconf(1), limits(3), sysctl(3)

# STANDARDS

The `sysconf`() function conforms to IEEE Std 1003.1-1990 (“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.

October 25, 2023 | NetBSD 11.0