SYSCTL(3)

명칭
sysctl, sysctlbyname, sysctlnametomib - 시스템 정보를 취득 또는 설정

프로그램 라이브러리
libc

서식
<sys/types.h> <sys/sysctl.h> int sysctl(int *name, u_int namelen, void *oldp, size_t *oldlenp, void *newp, size_t newlen) int sysctlbyname(const char *name, void *oldp, size_t *oldlenp, void *newp, size_t newlen) int sysctlnametomib(const char *name, int *mibp, size_t *sizep)

해설
sysctl() 함수는 시스템 정보를 꺼내, 해당하는 특권이 있는 프로세스가 시스템 정보를 설정할 수 있도록(듯이) 합니다. sysctl() 그리고 이용할 수 있는 정보는, 정수, string, 및 테이블로 구성됩니다. 정보는, sysctl(8) 유틸리티 (을)를 사용해 명령 인터페이스로부터 꺼내 및 설정할 수 있습니다.

이후에 명확하게 기재했을 경우를 제외해, sysctl() (은)는, 요구된 데이터의 일관했다 snapshot를 돌려줍니다. 일관성을 유지하기 위해서(때문에), 메모리에의 행선지 버퍼가 락 되므로, 데이터는 블록없이 카피할 수 있습니다. sysctl() 의 호출은 데드 록을 회피하기 위해서 시리얼화 되고 있습니다.

상태는 ``관리 정보 베이스'' (Management Information Base, MIB) 스타일의 이름을 사용해 기술되어 name 에 리스트 됩니다. name (은)는 길이가 namelen 의 정수의 배열입니다.

sysctlbyname() 함수는, 이름의 ASCII 표현을 받아들여 정수의 이름 벡터를 내부적으로 검색합니다. 그 이외는, 표준의 sysctl() 함수와 같이 기능합니다.

정보는 oldp 그리고 지정한 버퍼에 카피됩니다. 버퍼의 사이즈는, 불러 방편의 전에 oldlenp 그리고 지정한 위치에서 주어집니다. 이 정도치는, 호출이 정상적으로 완료한 후 및 에러 코드 ENOMEM 그리고 돌아간 후에 카피되는 데이터의 양을 줍니다. 이용할 수 있는 데이터의 양이 지정의 버퍼 사이즈보다 큰 경우, 호출은, 지정 버퍼에 막 들어가는 양의 데이터만을 주어 에러 코드 ENOMEM 그리고 돌아갑니다. 낡은 값이 불필요한 경우는, oldp (와)과 oldlenp (을)를 NULL 에 설정해 주세요.

이용할 수 있는 데이터의 사이즈를 결정하려면 , oldp 에 NULL 파라미터를 지정해 sysctl() (을)를 호출합니다. 이용할 수 있는 데이터의 사이즈가, oldlenp (이)가 가리키는 위치에 돌려주어집니다. 조작에 따라서는 공간의 양이 빈번하게 변화하는 일이 있습니다. 그러한 조작의 경우, 시스템은 양을 끝맺으려고 합니다. 돌려주어진 사이즈 하지만, 그 후 곧 데이터를 돌려주는 호출에 충분하도록 하기 (위해)때문입니다.

새로운 값을 설정하기 위해(때문에), newp (은)는, 길이가 newlen 의 버퍼를 가리키도록(듯이) 설정됩니다. 이 버퍼로부터, 요구된 값이 취득됩니다. 새로운 값이 설정되지 않으면 newp 하 NULL (으)로 설정되어 newlen 하 0 으로 설정됩니다.

sysctlnametomib() 함수는, ASCII 표현의 이름을 받아들여 정수의 이름 벡터를 검색해, mibp 그리고 가리켜지는 mib 배열중에, 수치 표현을 격납해 돌려줍니다. mib 배열중의 요소수는, 호출전에 sizep 그리고 지정된 장소가 줍니다. 호출이 성공한 후에는, 이 장소에는, 카피된 요소수가 주어집니다. 결과의 mib (와)과 size (은)는, 다음에 sysctl() 호출해에 사용해, 요구한 ASCII 명에 관련지을 수 있고 있는 데이터를 취득 가능합니다. 같은 이름의 변수를 반복해 요구하는 어플리케이션이 사용하는 것을, 이 인터페이스는 의도하고 있습니다 ( sysctl() 함수는, sysctlbyname() 함수로 실현되는 요구와 같은 것을, 약 1/3 의 시간에 실행합니다). sysctlbyname() 함수는, mib 의 전치사를 취득해 이것에 마지막 원가요소를 부가하기 위해서도 유용합니다. 예를 들면, PID 가 100 미만의 프로세스의 프로세스 정보를 취득하려면 , 다음과 같이 합니다:

    int i, mib[4];
    size_t len;
    struct kinfo_proc kp;
    /* Fill out the first three components of the mib */
    len = 4;
    sysctlnametomib("kern.proc.pid", mib, &len);
    /* Fetch and print entries for pid's < 100 */
    for (i = 0; i < 100; i++) {
    	mib[3] = i;
    	len = sizeof(kp);
    	if (sysctl(mib, 4, &kp, &len, NULL, 0) == -1)
    		perror("sysctl");
    	else if (len > 0)
    		printkproc(&kp);
    }

1 번상의 레벨의 이름은 <sys/sysctl.h> 에 CTL_ 접두어 첨부로 정의됩니다. 다음과 같습니다. 다음의 레벨 및 그것 이하의 레벨은, 여기에 리스트 한다 인클루드 파일내에 있어, 이후의 개별의 섹션으로 설명합니다.

이름다음의 레벨명 해설
CTL_DEBUG | sys/sysctl.h | 디버그
CTL_VFS | sys/mount.h | 파일 시스템
CTL_HW | sys/sysctl.h | 일반적인 CPU, I/O
CTL_KERN | sys/sysctl.h | 커널의 최고한도계
CTL_MACHDEP | sys/sysctl.h | 머신 의존
CTL_NET | sys/socket.h | 네트워크
CTL_USER | sys/sysctl.h | 유저 레벨
CTL_VM | vm/vm_param.h | 가상 메모리

예를 들어, 시스템으로 허용 되는 프로세스의 최대수를 꺼내는 방법은 다음과 같습니다.

    int mib[2], maxproc;
    size_t len;
    mib[0] = CTL_KERN;
    mib[1] = KERN_MAXPROC;
    len = sizeof(maxproc);
    sysctl(mib, 2, &maxproc, &len, NULL, 0);

시스템 유틸리티의 표준 검색 패스를 꺼내는 방법은 다음과 같습니다.

    int mib[2];
    size_t len;
    char *p;
    mib[0] = CTL_USER;
    mib[1] = USER_CS_PATH;
    sysctl(mib, 2, NULL, &len, NULL, 0);
    p = malloc(len);
    sysctl(mib, 2, p, &len, NULL, 0);

  CTL_DEBUG
디버그 변수는 시스템 마다 다양합니다. 디버그 변수를 추가 또는 삭제할 때, 그것을 인식하도록(듯이) sysctl() (을)를 컴파일 다시 할 필요는 없습니다. 실행마다, sysctl() 하지만, 커널로부터 디버그 변수의 리스트를 취득해, 그 현재가를 표시하기 때문입니다. 시스템은 20 개의 (struct ctldebug) 변수를 정의합니다. 이것들은 debug0 (으)로부터 debug19 그렇다고 한다 이름이 됩니다. 이것들은 별개의 변수로서 선언되므로, 대응 변수의 위치에서 개별적으로 초기화할 수 있습니다. 로더는, 변수가 복수의 장소에서 초기화되었을 때는 에러를 내, 같은 변수가 복수에 사용되는 것을 회피합니다. 예를 들어, 변수 dospecialcheck (을)를 디버그 변수로서 export 하는 경우에는, 다음의 선언이 사용할 수 있습니다.
    int dospecialcheck = 1;
    struct ctldebug debug5 = { "dospecialcheck", &dospecialcheck };

  CTL_VFS
명료한 제 2 레벨의 명칭 VFS_GENERIC (은)는, 모든 파일 시스템에 관한 일반 정보를 취득하는데 사용합니다. 이것의 제 3 레벨의 식별자의 1 개(살)은 VFS_MAXTYPENUM 그리고, 가장 큰 파일 시스템 타입의 번호를 줍니다. 다른 제 3 레벨의 식별자는 VFS_CONF 그리고, 제 4 레벨의 식별자로서 주어졌다 파일 시스템 타입에 관한 구성을 돌려줍니다 ( 사용법의 예는 getvfsbyname(3) (을)를 참조 ) 2 레벨의 식별자는, statfs(2) 호출해 또는 VFS_CONF 하지만 돌려주는 파일 시스템 타입 번호입니다. 각 파일 시스템에 대해 이용할 수 있는 제 3 레벨의 식별자는, 그 파일 시스템의 mount 인수 구조를 정의한다 헤더 파일로 지정됩니다.

  CTL_HW
CTL_HW 레벨에 관해서 이용할 수 있는 string와 정수에 대해서는 이하로 자세하게 설명합니다. 변경 가능성의 열은, 적절한 특권이 있는 프로세스가 값을 변경할 수 있는지 어떤지를 나타냅니다.
제 2 레벨명 타입 변경 가능
HW_MACHINE | string 아니오
HW_MODEL | string 아니오
HW_NCPU | 정수 아니오
HW_BYTEORDER | 정수 아니오
HW_PHYSMEM | 정수 아니오
HW_USERMEM | 정수 아니오
HW_PAGESIZE | 정수 아니오
HW_FLOATINGPOINT | 정수 아니오
HW_MACHINE_ARCH | string 아니오

HW_MACHINE
    머신 클래스

HW_MODEL
    머신 모델

HW_NCPU
    CPU 의 수

HW_BYTEORDER
    바이트순서 (4,321, 또는 1,234)

HW_PHYSMEM
    물리 메모리의 바이트

HW_USERMEM
    커널이 아닌 메모리의 바이트

HW_PAGESIZE
    소프트웨어의 페이지 사이즈

HW_FLOATINGPOINT
    부동 소수점 서포트가 하드웨어에 있는 경우는 제로가 아니다

HW_MACHINE_ARCH
    머신은 아키텍쳐 타입에 의존

  CTL_KERN
CTL_KERN 레벨에 관해서 이용할 수 있는 string와 정수의 정보에 대해 이하에 자세하게 설명합니다. 변경 가능성의 열은, 해당하는 특권이 있는 프로세스가 값을 변경하는지 어떤지를 나타냅니다. 현시점에서 이용할 수 있는 데이터의 타입은, 프로세스 정보, 시스템 vnode, 열린 파일의 엔트리, routing table의 엔트리, 가상 메모리 통계, 부하 평균 히스토리, 및 클럭레이트 정보입니다.

제 2 레벨명 타입 변경 가능
KERN_ARGMAX | 정수 아니오
KERN_BOOTFILE | string는 있고
KERN_BOOTTIME | struct timeval | 아니오
KERN_CLOCKRATE | struct clockinfo | 아니오
KERN_FILE | struct file | 아니오
KERN_HOSTID | 정수는 있고
KERN_HOSTNAME | string는 있고
KERN_JOB_CONTROL | 정수 아니오
KERN_MAXFILES | 정수는 있고
KERN_MAXFILESPERPROC | 정수는 있고
KERN_MAXPROC | 정수 아니오
KERN_MAXPROCPERUID | 정수는 있고
KERN_MAXVNODES | 정수는 있고
KERN_NGROUPS | 정수 아니오
KERN_NISDOMAINNAME | string는 있고
KERN_OSRELDATE | 정수 아니오
KERN_OSRELEASE | string 아니오
KERN_OSREV | 정수 아니오
KERN_OSTYPE | string 아니오
KERN_POSIX1 | 정수 아니오
KERN_PROC | struct proc | 아니오
KERN_PROF | node | 적용 불가
KERN_QUANTUM | 정수는 있고
KERN_SAVED_IDS | 정수 아니오
KERN_SECURELVL | 정수 누승만
KERN_UPDATEINTERVAL | 정수 아니오
KERN_VERSION | string 아니오
KERN_VNODE | struct vnode | 아니오

KERN_ARGMAX
    execve(2) 에의 인수의 최대 바이트수

KERN_BOOTFILE
    커널이 로드 된 원의 파일의 완전한 패스명

KERN_BOOTTIME
    struct timeval 구조가 돌려주어집니다. 이 구조에는, 시스템이 기동되었을 때 각이 넣을 수 있습니다.

KERN_CLOCKRATE
    struct clockinfo 구조가 돌려주어집니다. 이 구조에는, 클락, 통계 클락, 및 프로파일화 클락 빈도, 마이크로 세컨드 /hz 틱, 및 뒤틀림 레이트 하지만 넣을 수 있습니다.

KERN_FILE
    파일 테이블 전체를 돌려줍니다. 돌려주어진 데이터는, 1 개(살)의 struct filehead 에 struct file 의 배열이 계속된 것이 됩니다. 파일의 사이즈는, 시스템내의 그러한 오브젝트의 현재의 수로 정해집니다.

KERN_HOSTID
    호스트 ID (을)를 취득 또는 설정합니다.

KERN_HOSTNAME
    호스트명을 취득 또는 설정합니다.

KERN_JOB_CONTROL
    이 시스템으로 정보 제어를 이용할 수 있는 경우는 1 을 돌려줍니다. 그렇지 않은 경우는 0 을 돌려줍니다.

KERN_MAXFILES
    시스템으로 여는 파일의 최대수

KERN_MAXFILESPERPROC
    1 개의 프로세스에 대해 여는 파일의 최대수. 이 제한이 적용되는 것은, 연다고 하는 요구가 있던 시점에서, 제로가 아닌 유효한 uid (이)가 있는 프로세스만입니다. 제한 또는 유효한 uid 하지만 변경되어도, 이미 열리고 있는 파일은 영향을 받지 않습니다.

KERN_MAXPROC
    시스템내에서 용서되는 동시 프로세스의 최대수

KERN_MAXPROCPERUID
    1 개(살)의 유효한 uid 에 붙어 시스템이 허용 하는 동시 프로세스의 최대수. 이 한계가 적용되는 것은, 포크 요구의 시점에서, 제로가 아닌 유효한 uid (이)가 있는 프로세스 뿐입니다. 한계가 변경되어도, 이미 개시되고 있는 프로세스는 영향을 받지 않습니다.

KERN_MAXVNODES
    시스템으로 이용할 수 있다 vnode 의 최대수

KERN_NGROUPS
    보충 그룹의 최대수

KERN_NISDOMAINNAME
    현재의 YP/NIS 도메인의 이름

KERN_OSRELDATE
    시스템의 릴리스 일자. 형식은 YYYYMM (1996 년 1 월은 199601 으로 코드화 됩니다 ).

KERN_OSRELEASE
    시스템 릴리스 string

KERN_OSREV
    시스템 개정 string

KERN_OSTYPE
    시스템 타입 string

KERN_POSIX1
    시스템이 준거하려고 하고 있다 p1003.1 의 버젼

KERN_PROC
    프로세스 테이블 전체 또는 그 부분집합을 돌려줍니다. struct kinfo_proc 구조의 배열이 돌려주어져 배열의 사이즈는 시스템내의 그러한 오브젝트의 현재의 수로 정해집니다. 제 3 레벨과 제 4 레벨은 다음과 같습니다.
    제 3 레벨명 제 4 레벨명
    KERN_PROC_ALL | 없음
    KERN_PROC_PID | 프로세스 ID
    KERN_PROC_PGRP | 프로세스 그룹
    KERN_PROC_TTY | tty 디바이스
    KERN_PROC_UID | 유저 ID
    KERN_PROC_RUID | 리얼 유저 ID

KERN_PROF
    커널에 관한 프로파일화 정보를 돌려줍니다. 커넬을 프로파일화용으로 컴파일 하지 않으면 KERN_PROF 값을 꺼내려고 해도, ENOENT 그리고 처리는 실패합니다. string용의 제 3 레벨명 및 정수 프로파일화 정보에 대해 이하에 자세하게 설명합니다. ( 변경 가능성의 열은, 해당하는 특권이 있는 프로세스가 값을 변경할 수 있는지 어떤지를 나타냅니다.
    제 3 레벨명 타입 변경 가능
    GPROF_STATE | 정수는 있고
    GPROF_COUNT | u_short[] | 네
    GPROF_FROMS | u_short[] | 네
    GPROF_TOS | struct tostruct | 네
    GPROF_GMONPARAM | struct gmonparam | 아니오

    변수는 다음과 같습니다.

    GPROF_STATE
        GMON_PROF_ON 또는 GMON_PROF_OFF (을)를 돌려주어, 프로파일화가 진행중인지, 또는 정지하고 있는지를 나타냅니다.

    GPROF_COUNT
        통계 프로그램 카운터 카운트의 배열

    GPROF_FROMS
        호출점의 프로그램 카운트로 인덱스 처리된 배열

    GPROF_TOS
        호출의 행선지와 그 카운트를 기술한다 struct tostruct 의 배열

    GPROF_GMONPARAM
        상기의 배열의 사이즈를 지정하는 구조

KERN_QUANTUM
    타프로세스가 실행 기다리는 행렬에 있는 경우에 대해 어느 프로세스가 다루어지지 않고 실행해 계속되는 최대 기간을, 밀리 세컨드 단위로 가리킵니다.

KERN_SAVED_IDS
    보존되었다 set-group 및 보존되었다 set-user ID 하지만 이용할 수 있는 경우는 1 을 돌려줍니다.

KERN_SECURELVL
    시스템의 보안 레벨. 이 레벨은, 해당하는 특권이 있는 프로세스 에 의해 올릴 수가 있습니다. 내릴 수 없습니다.

KERN_VERSION
    시스템 버젼 string

KERN_VNODE
    vnode 테이블 전체를 돌려줍니다. vnode 테이블은 반드시 시스템의 일관했다 snapshot는 아닌 것에 주의해 주세요. 돌려주어지는 데이터는 배열로 구성되어 배열의 사이즈는, 시스템내의 그러한 오브젝트의 현재의 수로 정해집니다. 배열의 각 요소에 포함되는 것은, vnode 의 커널 주소 struct vnode * 에 vnode 자체 struct vnode 하지만 계속된 것입니다.

  CTL_MACHDEP
정의된 변수의 집합은 아키텍쳐에 의존합니다. 다음의 변수가 i386 아키텍쳐용으로 정의되고 있습니다.
제 2 레벨명 타입 변경 가능
CPU_CONSDEV | dev_t | 아니오
CPU_ADJKERNTZ | 정수는 있고
CPU_DISRTCSET | 정수는 있고
CPU_BOOTINFO | struct bootinfo | 아니오
CPU_WALLCLOCK | 정수는 있고

  CTL_NET
CTL_NET 레벨에 이용할 수 있는 string와 정수에 대해서는 이하에 자세하게 설명합니다. 변경 가능성의 열은, 해당하는 특권이 있는 프로세스가 값을 변경할 수 있는지 어떤지를 나타냅니다.
제 2 레벨명 타입 변경 가능
PF_ROUTE | 루팅 메세지 아니오
PF_INET | IPv4 치는 있고
PF_INET6 | IPv6 치는 있고

PF_ROUTE
    routing table 전체 또는 그 부분집합을 돌려줍니다. 데이터는, 루팅 메세지의 순차 순서로서 돌려주어집니다 ( 헤더 파일, 형식, 및 의미에 대해서는 route(4) (을)를 참조 ). 각 메세지의 길이는 메세지헤더 에 짜넣어지고 있습니다.

    제 3 레벨명은 프로토콜 번호로, 현시점에서는 반드시 0 입니다. 제 4 레벨명은 주소 패밀리로, 이것을 0 으로 설정하면(자) 모든 주소 패밀리를 선택할 수 있습니다. 제 5 레벨명과 제 6 레벨명은 다음과 같습니다.
    제 5 레벨명 제 6 레벨
    NET_RT_FLAGS | rtflags
    NET_RT_DUMP | 없음
    NET_RT_IFLIST | 없음

PF_INET
    IPv4 (인터넷 프로토콜 버젼 4) 에 관한 각종의 글로벌인 정보를 취득 또는 설정합니다. 제 3 레벨명은 프로토콜입니다. 제 4 레벨명은 변수명입니다. 현시점에서 정의되고 있는 프로토콜과 이름은 다음과 같습니다.
    프로토콜 변수 타입 변경 가능
    icmp | bmcastecho | 정수는 있고
    icmp | maskrepl | 정수는 있고
    ip | forwarding | 정수는 있고
    ip | redirect | 정수는 있고
    ip | ttl | 정수는 있고
    udp | checksum | 정수는 있고

    변수는 다음과 같습니다.

    icmp.bmcastecho
        브로드캐스트 또는 멀티 캐스트의 주소에의 ICMP 에코 요구가 응답될 필요가 있는 경우는 1 을 돌려줍니다.

    icmp.maskrepl
        ICMP 네트워크 마스크 요구가 응답될 필요가 있는 경우는 1 을 돌려줍니다.

    ip.forwarding
        IP 전송이 호스트에 대해 유효한 때는 1 을 돌려줍니다. 즉, 호스트가 라우터 (으)로서 기능하고 있을 때입니다.

    ip.redirect
        ICMP 재전송이 호스트에 의해 송신할 수 있을 때는 1 을 돌려줍니다. 이 옵션 (은)는, 호스트가 IP 패킷을 루팅 하고 있지 않는 경우는 무시됩니다. 또, 이 옵션은 통상, 모든 시스템으로 유효하게 해 둘 필요가 있습니다.

    ip.ttl
        시스템이 소스가 되어 있다 IP 패킷의 최대 수명 ( 호프수 ) 치. 이 값은 통상의 트랜스폴트 프로토콜에 적용됩니다. ICMP 에가 아닙니다.

    udp.checksum
        UDP 체크 섬이 계산 및 체크되고 있을 때는 1 을 돌려줍니다. UDP 체크 섬을 무효로 하는 것은, 강하고 비추천입니다.

        변수 net.inet. *.ipsec 에 대해서는 ipsec(4) (을)를 참조해 주세요.

PF_INET6
    IPv6 (인터넷 프로토콜 버젼 6) 에 관한 각종의 글로벌인 정보를 취득 또는 설정합니다. 제 3 레벨명은 프로토콜입니다. 제 4 레벨명은 변수명입니다.

    변수 net.inet6. * 에 대해서는 inet6(4) (을)를 참조해 주세요. 변수 net.inet6. *.ipsec6 에 대해서는 ipsec(4) (을)를 참조해 주세요.

  CTL_USER
CTL_USER 레벨에 이용할 수 있는 string와 정수에 대해 이하에 자세하게 설명합니다. 변경 가능성의 열은, 해당하는 특권이 있는 프로세스가 값을 변경할 수 있는지 어떤지를 가리킵니다.
제 2 레벨명 타입 변경 가능
USER_BC_BASE_MAX | 정수 아니오
USER_BC_DIM_MAX | 정수 아니오
USER_BC_SCALE_MAX | 정수 아니오
USER_BC_STRING_MAX | 정수 아니오
USER_COLL_WEIGHTS_MAX | 정수 아니오
USER_CS_PATH | string 아니오
USER_EXPR_NEST_MAX | 정수 아니오
USER_LINE_MAX | 정수 아니오
USER_POSIX2_CHAR_TERM | 정수 아니오
USER_POSIX2_C_BIND | 정수 아니오
USER_POSIX2_C_DEV | 정수 아니오
USER_POSIX2_FORT_DEV | 정수 아니오
USER_POSIX2_FORT_RUN | 정수 아니오
USER_POSIX2_LOCALEDEF | 정수 아니오
USER_POSIX2_SW_DEV | 정수 아니오
USER_POSIX2_UPE | 정수 아니오
USER_POSIX2_VERSION | 정수 아니오
USER_RE_DUP_MAX | 정수 아니오
USER_STREAM_MAX | 정수 아니오
USER_TZNAME_MAX | 정수 아니오

USER_BC_BASE_MAX
    bc(1) 유틸리티내의 최대 ibase/obase 치

USER_BC_DIM_MAX
    bc(1) 유틸리티내의 최대 배열 사이즈

USER_BC_SCALE_MAX
    bc(1) 유틸리티내의 최대 스케일치

USER_BC_STRING_MAX
    bc(1) 유틸리티내의 최대 string장

USER_COLL_WEIGHTS_MAX
    로케일 정의 파일내의 LC_COLLATE 순서 키워드의 엔트리로 나누어 맞히고 할 수 있는 중량감의 최대수

USER_CS_PATH
    모든 표준 유틸리티를 검출하는 환경 변수 PATH 의 값을 돌려줍니다.

USER_EXPR_NEST_MAX
    expr(1) 유틸리티에 의해, 환괄호내에 네스트 할 수 있는 식의 최대수

USER_LINE_MAX
    텍스트 처리 유틸리티 입력행의 최대장 ( 바이트 단위 )

USER_POSIX2_CHAR_TERM
    p1003.2 에 기술된 모든 조작을 할 수 있는 적어도 1 개의 단말 타입을 시스템이 서포트하는 경우는 1 을 돌려줍니다. 그렇지 않은 경우는 0 을 돌려줍니다.

USER_POSIX2_C_BIND
    시스템의 C 언어 개발 기능이, C 언어 바인딩 옵션을 서포트한다 경우는 1 을 돌려줍니다. 그렇지 않은 경우는 0 을 돌려줍니다.

USER_POSIX2_C_DEV
    시스템이 C 언어 개발 유틸리티 옵션을 서포트하는 경우는 1 을 돌려줍니다. 그렇지 않은 경우는 0 을 돌려줍니다.

USER_POSIX2_FORT_DEV
    시스템이 FORTRAN 개발 유틸리티 옵션을 서포트하는 경우는 1 을 돌려줍니다. 그렇지 않은 경우는 0 을 돌려줍니다.

USER_POSIX2_FORT_RUN
    시스템이 FORTRAN 런타임 유틸리티 옵션을 서포트하는 경우는 1 을 돌려줍니다. 그렇지 않은 경우는 0 을 돌려줍니다.

USER_POSIX2_LOCALEDEF
    시스템이 로케일의 작성을 서포트하는 경우는 1 을 돌려줍니다. 그렇지 않은 경우는 0 을 돌려줍니다.

USER_POSIX2_SW_DEV
    시스템이 소프트웨어 개발 유틸리티 옵션을 서포트하는 경우는 1 을 돌려줍니다. 그렇지 않은 경우는 0 을 돌려줍니다.

USER_POSIX2_UPE
    시스템이 유저 portability·유틸리티 옵션을 서포트한다 경우는 1 을 돌려줍니다. 그렇지 않은 경우는 0 을 돌려줍니다.

USER_POSIX2_VERSION
    시스템이 준거하려고 하고 있다 p1003.2 의 버젼

USER_RE_DUP_MAX
    간격 표기를 사용하고 있을 때, 허용 되는 정규 표현의 반복 발생의 최대수

USER_STREAM_MAX
    프로세스가 동시에 열어 둘 수 있는 스트림의 최대수의 최소

USER_TZNAME_MAX
    시간대의 이름에 대해 서포트되는 타입의 최대수의 최소

  CTL_VM
CTL_VM 레벨로 이용할 수 있는 string와 정수에 대해 이하로 자세하게 설명합니다. 변경 가능성의 열은, 해당하는 특권이 있는 프로세스가 값을 변경할 수 있는지 어떤지를 가리킵니다.
제 2 레벨명 타입 변경 가능
VM_LOADAVG | struct loadavg | 아니오
VM_METER | struct vmtotal | 아니오
VM_PAGEOUT_ALGORITHM | 정수는 있고
VM_SWAPPING_ENABLED | 정수 아마
VM_V_CACHE_MAX | 정수는 있고
VM_V_CACHE_MIN | 정수는 있고
VM_V_FREE_MIN | 정수는 있고
VM_V_FREE_RESERVED | 정수는 있고
VM_V_FREE_TARGET | 정수는 있고
VM_V_INACTIVE_TARGET | 정수는 있고
VM_V_PAGEOUT_FREE_MIN | 정수는 있고

VM_LOADAVG
    부하 평균 히스토리를 돌려줍니다. 돌려주어진 데이터는 struct loadavg (으)로 구성됩니다.

VM_METER
    시스템 전체에 건너는 가상 메모리 통계를 돌려줍니다. 돌려주어진 데이터는 struct vmtotal (으)로 구성됩니다.

VM_PAGEOUT_ALGORITHM
    통계 베이스의 관리 알고리즘이 사용되는 경우는 0 입니다. 근 LRU ( near-LRU ) 알고리즘이 사용되는 경우는 1 입니다.

VM_SWAPPING_ENABLED
    프로세스 스왑이 유효한 경우는 1 입니다. 무효인 경우는 0 입니다. 스왑을 무효로 해 커널이 구축되었을 경우, 이 변수는 영속적으로 0 으로 설정됩니다.

VM_V_CACHE_MAX
    캐쉬 기다리는 행렬의 최대 희망 사이즈

VM_V_CACHE_MIN
    캐쉬 기다리는 행렬의 최소 희망 사이즈. 캐쉬 기다리는 행렬의 사이즈가 이 값보다 훨씬 낮으면 페이지 아웃 demon가 기동됩니다.

VM_V_FREE_MIN
    메모리를 기다리고 있는 프로세스가 기동하기 전에, 이용할 수 있게 될 필요가 있다 메모리의 최소량 ( 캐시 기억 장치＋빈메모리 ).

VM_V_FREE_RESERVED
    빈페이지와 캐쉬 페이지가 이 값보다 낮으면 프로세스는 페이지 아웃 demon를 기동해, 메모리를 대기합니다.

VM_V_FREE_TARGET
    페이지 아웃 demon가 유지하려고 하는 빈메모리의 합계량 ( 캐시 기억 장치를 포함한다 ).

VM_V_INACTIVE_TARGET
    페이지 아웃 demon가, 실행될 때, 도달할 필요가 있는 액티브 (이)가 아닌 페이지의 희망수. 액티브하지 않은 페이지는, 필요한 때에, 프로세스 주소내에 재빠르게 삽입할 수 있습니다.

VM_V_PAGEOUT_FREE_MIN
    빈메모리와 캐시 기억 장치의 양이 이 값보다 낮은 경우, 페이지 아웃 demon (은)는 데드 록을 피하기 위해서(때문에) "메모리 유지 모드" 에 들어갑니다.

반환값

에러
다음의 에러가 보고될 가능성이 있습니다.

[EFAULT]
    버퍼 name, oldp, newp, 또는 길이 포인터 oldlenp 에 무효인 주소가 포함되어 있습니다.

[EINVAL]
    name 배열이 2 미만인지, 또는 CTL_MAXNAME 보다 커지고 있습니다.

[EINVAL]
    NULL (이)가 아니다 newp 하지만 지정되어 newlen 안의 지정의 길이가 너무 크든가 또는 너무 작습니다.

[ENOMEM]
    oldlenpis 하지만 가리키는 길이가 너무 짧아, 요구된 값을 보관 유지할 수 없습니다.

[ENOTDIR]
    name 배열이, 구석의 이름이 아니고, 중간의 이름을 지정해 있습니다.

[EISDIR]
    name 배열이 구석의 이름을 지정해 있습니다만, 실제의 이름은 구석이 아닙니다.

[ENOENT]
    name 배열이 미지의 값을 지정해 있습니다.

[EPERM]
    독해 전용치를 설정하려고 했습니다.

[EPERM]
    해당하는 특권이 없는 프로세스가 값을 설정하려고 했습니다.

파일
<sys/sysctl.h>
    1 번상의 레벨의 식별자의 정의, 2 번째의 레벨의 커널 및 하드웨어 식별자, 및 유저 레벨 식별자
<sys/socket.h>
    제 2 레벨의 네트워크 식별자의 정의
<sys/gmon.h>
    제 3 레벨의 프로파일화 식별자에 대한 정의
<vm/vm_param.h>
    제 2 레벨의 가상 메모리 식별자에 대한 정의
<netinet/in.h>
    제 3 레벨의 IPv4/IPv6 식별자와 제 4 레벨의 IPv4/IPv6 식별자에 대한 정의
<netinet/icmp_var.h>
    제 4 레벨의 ICMP 식별자에 대한 정의
<netinet/icmp6.h>
    4 레벨의 ICMPv6 식별자에 대한 정의
<netinet/udp_var.h>
    제 4 레벨의 UDP 식별자에 대한 정의

관련 항목
sysconf(3), sysctl(8)

역사
sysctl() 함수는 4.4BSD 그리고 최초로 받아들여졌습니다.