tail head cat sleep
QR code linking to this page

Man page  — SYSCTL

명칭

sysctl, sysctlbyname, sysctlnametomib – 시스템 정보를 취득 또는 설정

내용

프로그램 라이브러리

Standard C Library (libc, -lc)

서식

#include <sys/types.h>
#include <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 Ta sys/sysctl.h
디버그

CTL_VFS Ta sys/mount.h
파일 시스템

CTL_HW Ta sys/sysctl.h
일반적인 CPU, I/O

CTL_KERN Ta sys/sysctl.h
커널의 최고한도계

CTL_MACHDEP Ta sys/sysctl.h
머신 의존

CTL_NET Ta sys/socket.h
네트워크

CTL_USER Ta sys/sysctl.h
유저 레벨

CTL_VM Ta 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 Ta struct timeval
아니오

KERN_CLOCKRATE Ta struct clockinfo
아니오

KERN_FILE Ta 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 Ta struct proc
아니오

KERN_PROF Ta node
적용 불가

KERN_QUANTUM
정수는 있고

KERN_SAVED_IDS
정수 아니오

KERN_SECURELVL
정수 누승만

KERN_UPDATEINTERVAL
정수 아니오

KERN_VERSION
string 아니오

KERN_VNODE Ta 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
  시스템이 준거하려고 하고 있다 IEEE Std 1003.1 ("POSIX.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 Ta u_short[]

GPROF_FROMS Ta u_short[]

GPROF_TOS Ta struct tostruct

GPROF_GMONPARAM Ta 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 Ta dev_t 아니오
CPU_ADJKERNTZ 정수는 있고
CPU_DISRTCSET 정수는 있고
CPU_BOOTINFO Ta 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 Ta bmcastecho
정수는 있고

icmp Ta maskrepl
정수는 있고

ip Ta forwarding
정수는 있고

ip Ta redirect
정수는 있고

ip Ta ttl
정수는 있고

udp Ta 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
  IEEE Std 1003.2 ("POSIX.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
  시스템이 준거하려고 하고 있다 IEEE Std 1003.2 ("POSIX.2") 의 버젼
USER_RE_DUP_MAX
  간격 표기를 사용하고 있을 때, 허용 되는 정규 표현의 반복 발생의 최대수
USER_STREAM_MAX
  프로세스가 동시에 열어 둘 수 있는 스트림의 최대수의 최소
USER_TZNAME_MAX
  시간대의 이름에 대해 서포트되는 타입의 최대수의 최소

CTL_VM

CTL_VM 레벨로 이용할 수 있는 string와 정수에 대해 이하로 자세하게 설명합니다. 변경 가능성의 열은, 해당하는 특권이 있는 프로세스가 값을 변경할 수 있는지 어떤지를 가리킵니다.
제 2 레벨명 타입 변경 가능

VM_LOADAVG Ta struct loadavg
아니오

VM_METER Ta 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 (은)는 데드 록을 피하기 위해서(때문에) "메모리 유지 모드" 에 들어갑니다.

반환값

Upon successful completion, the value 0 is returned; otherwise the value -1 is returned and the global variable errno is set to indicate the error.

에러

다음의 에러가 보고될 가능성이 있습니다.
[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() 함수는 BSD 4.4 그리고 최초로 받아들여졌습니다.

SYSCTL (3) January 23, 2001

tail head cat sleep
QR code linking to this page


Ben Bullock이 유닉스 매뉴얼 페이지에서 서비스에 대한 의견을 주시기 바랍니다. Privacy policy.

The “N” in NFS stands for Not, or Need, or perhaps Nightmare
— Harry Spencer