Linux sysconf函数 -- get configurable system variables

  • 函数原型

    long sysconf(int name);
    
  • 头文件

    #include <unistd.h>
    
  • 描述

    get configurable system variables.

    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>. Shell programmers who need access to these parameters should use the getconf(1) utility.

    主要是来获取系统变量的。

  • 参数

    	_SC_ARG_MAX
                 The maximum bytes of argument to execve(2).
    
         _SC_CHILD_MAX
                 The maximum number of simultaneous processes per user id.
    
         _SC_CLK_TCK
                 The frequency of the statistics clock in ticks per second.
    
         _SC_IOV_MAX
                 The maximum number of elements in the I/O vector used by readv(2), writev(2), recvmsg(2), and
                 sendmsg(2).
    
         _SC_NGROUPS_MAX
                 The maximum number of supplemental groups.
    
         _SC_NPROCESSORS_CONF
                 The number of processors configured.
    
         _SC_NPROCESSORS_ONLN
                 The number of processors currently online.
    
         _SC_OPEN_MAX
                 The maximum number of open files per user id.
    
         _SC_PAGESIZE
                 The size of a system page in bytes.
    
         _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 timezone.
    
         _SC_JOB_CONTROL
                 Return 1 if job control is available on this system, otherwise -1.
    
         _SC_SAVED_IDS
                 Returns 1 if saved set-group and saved set-user ID is available, otherwise -1.
    
         _SC_VERSION
                 The version of IEEE Std 1003.1 (POSIX.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 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 nota-
    	             tion.
    
         _SC_2_VERSION
                 The version of IEEE Std 1003.2 (POSIX.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, oth-
                 erwise -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 IEEE
                 Std 1003.2 (POSIX.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.
    
  • 返回值

    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.

  • 举个例子

    #include <stdio.h>
    #include <unistd.h>
     
    #define ONE_MB (1024 * 1024)
     
    int main()
    {
        printf("The number of processors configured is :%ld\n",
            sysconf(_SC_NPROCESSORS_CONF));
        printf("The number of processors currently online (available) is :%ld\n",
            sysconf(_SC_NPROCESSORS_ONLN));
        printf ("The pagesize: %ld\n", sysconf(_SC_PAGESIZE));  
        printf ("The number of pages: %ld\n", sysconf(_SC_PHYS_PAGES));  
        printf ("The memory size: %lld MB\n", 
            (long long)sysconf(_SC_PAGESIZE) * (long long)sysconf(_SC_PHYS_PAGES) / ONE_MB );  
        printf ("The number of files max opened:: %ld\n", sysconf(_SC_OPEN_MAX));  
        printf("The number of ticks per second: %ld\n", sysconf(_SC_CLK_TCK));  
        printf ("The max length of host name: %ld\n", sysconf(_SC_HOST_NAME_MAX));  
        printf ("The max number of simultaneous processes per user: %ld\n", sysconf(_SC_CHILD_MAX)); 
        return 0;
    }
    

    输出结果为:

    The number of processors configured is :4
    The number of processors currently online (available) is :4
    The pagesize: 4096
    The number of pages: 2097152
    The memory size: 8192 MB
    The number of files max opened:: 256
    The number of ticks per second: 100
    The max length of host name: 255
    The max number of simultaneous processes per user: 709
    
发布了52 篇原创文章 · 获赞 2 · 访问量 6092

猜你喜欢

转载自blog.csdn.net/LU_ZHAO/article/details/104398081