SYSCONF(3)

명칭
sysconf - configuration 가능한 시스템 변수를 취득

프로그램 라이브러리
libc

서식
<unistd.h> long sysconf(int name)

해설
이 인터페이스는, p1003.1-88 에 의해 정의된 것입니다. sysctl(3) (을)를 사용하면, 한층 더 한층 완전한 인터페이스를 사용할 수가 있습니다.

sysconf() 함수는, configuration 가능한 시스템의 제한 (system limit) 또는 옵션 변수의 현재의 값을, 어플리케이션이 조사하기 위한 방법을 제공합니다. 인수 name (은)는, 조회하는 시스템 변수를 지정합니다. 각각의 이름의 값에 대응하는 상징적 정수는, 인클루드 파일 <unistd.h> 의 안에 있습니다.

사용할 수 있는 값은 다음과 같습니다：

_SC_ARG_MAX
    execve(2) 의 인수의 최대 바이트수.

_SC_CHILD_MAX
    1 유저 ID 근처의 동시 프로세스의 최대수.

_SC_CLK_TCK
    1 초 쯤의 tick 수로 나타낸 통계 클락 (statistics clock)의 빈도.

_SC_NGROUPS_Max
    추가 가능한 그룹의 최대수.

_SC_OPEN_MAX
    1 유저 ID 당의 오픈 가능한 파일의 최대수.

_SC_STREAM_MAX
    1 개의 프로세스가 한 번에 오픈할 수 있는 스트림의 최대수의 최소치.

_SC_TZNAME_MAX
    시간대 (timezone)의 이름으로서 서포트되는 타입의 최대수의 최소치.

_SC_JOB_CONTROL
    이 시스템으로 작업 제어를 이용할 수 있다면 1 을 돌려주어, 이용할 수 없는 경우는 -1 을 돌려줍니다.

_SC_SAVED_IDS
    보존된 set-group 및 보존된 set-user ID 가 이용할 수 있는 경우는 1 을 돌려주어, 그렇지 않은 경우는 -1 을 돌려줍니다.

_SC_VERSION
    시스템이 준거하려고 시도한다 p1003.1 의 버젼.

_SC_BC_BASE_MAX
    bc(1) 유틸리티에 있어서의 ibase/obase 의 최대치.

_SC_BC_DIM_MAX
    bc(1) 유틸리티에 있어서의 최대 배열 사이즈.

_SC_BC_SCALE_MAX
    bc(1) 유틸리티에 있어서의 최대 스케일치.

_SC_BC_STRING_MAX
    bc(1) 유틸리티에 있어서의 최대 string장.

_SC_COLL_WEIGHTS_MAX
    로케일 정의 파일에 있어서의 LC_COLLATE 순서 키보드의 엔트리에 할당할 수가 있는 중량감의 최대수.

_SC_EXPR_NEST_MAX
    expr(1) 유틸리티에서의 괄호로 네스트 할 수 있는 식의 최대수.

_SC_LINE_MAX
    텍스트 처리 유틸리티의 입력 라인의 바이트로 나타낸 최대 길이.

_SC_RE_DUP_MAX
    인터벌 표기를 사용할 때에 용서되는 정규 표현의 반복 발생 회수의 최대수.

_SC_2_VERSION
    시스템이 준거하는 것을 시도한다 p1003.2 의 버젼.

_SC_2_C_BIND
    시스템의 C 언어 개발 퍼실리티로 C 언어 구축 옵션 (C-Language Bindings Option)이 서포트되고 있으면 1 을 돌려주어, 서포트되어 있지 않으면 -1 을 돌려줍니다.

_SC_2_C_DEV
    C 언어 개발 유틸리티 옵션 (C-Language Development Utilities Option)(이)가 서포트되고 있으면 1 을 돌려주어, 서포트되어 있지 않으면-1 을 돌려줍니다.

_SC_2_CHAR_TERM
    p1003.2 에 기술되고 있는 전조작이 가능한 단말 타입이, 최저 1 개(살) 서포트되고 있으면 1 을 돌려주어, 그렇지 않으면 -1 을 돌려줍니다.

_SC_2_FORT_DEV
    FORTRAN 개발 유틸리티 옵션 (FORTRAN Development Utilities Option)(이)가 서포트되고 있으면 1 을 돌려주어, 서포트되어 있지 않으면 -1 을 돌려줍니다.

_SC_2_FORT_RUN
    FORTRAN 런타임 유틸리티 옵션 (FORTRAN Runtime Utilities Option)(이)가 서포트되고 있으면 1 을 돌려주어, 서포트되어 있지 않으면 -1 을 돌려줍니다.

_SC_2_LOCALEDEF
    로케일의 작성이 서포트하고 있으면 1 을 돌려주어, 서포트되어 있지 않으면 -1 을 돌려줍니다.

_SC_2_SW_DEV
    소프트웨어 개발 유틸리티 옵션 (Software Development Utilities Option)(이)가 서포트되고 있으면 1 을 돌려주어, 서포트되어 있지 않으면 -1 을 돌려줍니다.

_SC_2_UPE
    유저 portability 유틸리티 옵션 (User Portability Utilities Option)(이)가 서포트되고 있으면 1 을 돌려주어, 서포트되어 있지 않으면 -1 을 돌려줍니다.

반환값
sysconf() 의 호출이 성공하지 않았을 때는 -1 이 돌려주어 errno 하지만 적절한 값으로 설정됩니다. 그렇지 않을 때는, 변수가 서포트되어 있지 않은 기능에 관련 지을 수 있고 있으면(자) -1 가 돌려주어 errno (은)는 수정되지 않습니다. 그 이외의 경우는, 현재의 변수치가 돌려주어집니다.

에러
sysconf() 함수가 실패해, 프로그램 라이브러리 함수 sysctl(3) 에 붙어 기록되고 있는 에러의 어느 쪽인가에 대응했다 errno 하지만 설정되는 일이 있습니다. 게다가 다음과 같은 에러가 보고되는 일이 있습니다.

[EINVAL]
    name 인수의 값이 무효입니다.

참조
sysctl(3)

버그
_SC_STREAM_MAX 의 값은 최대치의 최소치이며, ANSI C 의 FOPEN_MAX 와 같다라고 하는 것이 요구되고 있으므로, 반환값은 지극히 작은 오해를 부르는 것 같은 값이 됩니다.

표준
sysconf() (이)가 돌려주는 값이, 호출한 프로세스가 생존하고 있는 동안에 변화한다 가능성이 있는 것을 제외해서는, 이 함수는 p1003.1-88 에 준거하고 있습니다.

역사
sysconf() 함수는, 최초 4.4BSD 에 나타났습니다.