SYSCONF(3)                 Linux Programmer's Manual                SYSCONF(3)

       sysconf - Get configuration information at runtime

       #include <unistd.h>

       long sysconf(int name);

       sysconf()  provides  a  way for the application to determine values for
       system limits or options at runtime.

       The equivalent macros defined in <unistd.h> can only give  conservative
       values;  if  an application wants to take advantage of values which may
       change, a call to sysconf() can be made, which may yield  more  liberal

       For  getting  information  about  a particular file, see fpathconf() or

       The following values are supported for name.  First, the  POSIX.1  com-
       patible values:

              The  maximum  length  of  the  arguments to the exec() family of
              functions; the corresponding macro is ARG_MAX.

              The number of simultaneous processes per  user  id,  the  corre-
              sponding macro is CHILD_MAX.

              The  number  of  clock ticks per second; the corresponding macro
              was CLK_TCK.  This macro is obsolete now. (Note that  the  macro
              CLOCKS_PER_SEC   does   not  give  information:  it  must  equal

              The maximum number of streams that a process can  have  open  at
              any time.  The corresponding POSIX macro is STREAM_MAX, the cor-
              responding standard C macro is FOPEN_MAX.

              The maximum number of bytes in a timezone name, the  correspond-
              ing macro is TZNAME_MAX.

              The  maximum number of files that a process can have open at any
              time, the corresponding macro is OPEN_MAX.

              This indicates whether POSIX - style job control  is  supported,
              the corresponding macro is _POSIX_JOB_CONTROL.

              This  indicates  whether a process has a saved set-user-ID and a
              saved set-group-ID; the corresponding macro is _POSIX_SAVED_IDS.

              indicates  the  year and month the POSIX.1 standard was approved
              in the format YYYYMML;the value 199009L indicates the Sept. 1990
              revision.  The corresponding macro is _POSIX_VERSION.

       Next, the POSIX.2 values:

              indicates the maximum obase value accepted by the bc(1) utility;
              the corresponding macro is BC_BASE_MAX.

              indicates the maximum value of elements permitted in an array by
              bc(1); the corresponding macro is BC_DIM_MAX.

              indicates  the  maximum scale value allowed by bc(1); the corre-
              sponding macro is BC_SCALE_MAX.

              indicates the maximum length of a string accepted by bc(1);  the
              corresponding macro is BC_STRING_MAX.

              indicates the maximum numbers of weights that can be assigned to
              an entry of the LC_COLLATE order keyword in the  locale  defini-
              tion file; the corresponding macro is COLL_WEIGHTS_MAX.

              is  the maximum number of expressions which can be nested within
              parentheses   by   expr(1).    The   corresponding   macro    is

              The maximum length of a utility's input line length, either from
              standard input or from a file. This includes length for a trail-
              ing newline.  The corresponding macro is LINE_MAX.

              The  maximum number of repeated occurrences of a regular expres-
              sion when the interval notation \{m,n\} is used.  The  value  of
              the corresponding macro is RE_DUP_MAX.

              indicates  the  version of the POSIX.2 standard in the format of
              YYYYMML.  The corresponding macro is POSIX2_VERSION.

              indicates whether the POSIX.2 C language development  facilities
              are supported.  The corresponding macro is POSIX2_C_DEV.

              indicates  whether the POSIX.2 FORTRAN development utilities are
              supported.  The corresponding macro is POSIX2_FORT_RUN.

              indicates whether the POSIX.2 FORTRAN runtime utilities are sup-
              ported.  The corresponding macro is POSIX2_FORT_RUN.

              indicates   whether   the   POSIX.2   creation  of  locates  via
              localedef(1)  is  supported.    The   corresponding   macro   is

              indicates  whether  the  POSIX.2  software development utilities
              option is supported.  The corresponding macro is  POSIX2_SW_DEV.

       SUSv2 also lists

              The size of a page (in bytes).

       These values also exist, but may not be standard.

              The  number of pages of physical memory.  Note that it is possi-
              ble for the product of this value and the value of _SC_PAGE_SIZE
              to overflow.

              The number of currently available pages of physical memory.

       If name is invalid, -1 is returned, and errno is set to EINVAL.  Other-
       wise, the value returned is the value of the system resource,  1  if  a
       queried  option  is  available, 0 if it is not, or -1 on error, and the
       variable errno is not changed.


       It is difficult to use ARG_MAX because it is not specified how much  of
       the  argument  space  for  exec() is consumed by the user's environment

       Some returned values may be huge; they are not suitable for  allocating

       bc(1), expr(1), locale(1), fpathconf(3), pathconf(3)

GNU                               1993-04-18                        SYSCONF(3)