VLIMIT(3)

명칭
vlimit - system resource 소비의 최대치를 제어

서식
#include <sys/vlimit.h> vlimit(resource, value)

해설
이 인터페이스는, getrlimit(2)에 의해 옮겨놓을 수 있었습니다. 이 함수는, 호환성 프로그램 라이브러리, libcompat 로부터 사용할 수 있습니다.

현재의 프로세스 및 그것이 작성하는 각 프로세스에 의한 개별의 소비량이, 지정되었다 resource 에 붙어 value (을)를 넘지 않게 제한합니다. value 하지만 -1 으로 지정되어 있는 경우는, 현재의 한계치가 돌려주어 한계치는 변경되지 않습니다. 현재로서는 제어 가능한 리소스는 다음과 같습니다.

LIM_NORAISE
    의사 한계치. 비제로의 값으로 설정해도, 한계치는 끌어 올려지지 않는 경우가 있습니다. noraise 제한을 삭제할 수가 있는 것은, 수퍼 유저만입니다.

LIM_CPU
    각 프로세스가 사용하는 cpu 초의 최대수.

LIM_FSIZE
    작성할 수 있는 최대의 단일 파일.

LIM_DATA
    sbrk(2) 에 의한 data+stack area의 프로그램 텍스트의 마지막을 넘은 최대 성장도.

LIM_STACK
    자동적으로 확장된 스택 area의 최대 사이즈.

LIM_CORE
    작성되는 최대의 코어덤프의 사이즈.

LIM_MAXRSS
    프로그램에 할당할 수 있는 물리적 메모리량(바이트)의 소프트 한계치. 메모리가 부족하는 경우는, 시스템은 선언했다 LIM_MAXRSS (을)를 넘고 있는 프로세스로부터 메모리를 채택합니다.

이 정보는 프로세스 마다의 정보에 보존되고 있으므로, 이 시스템 콜을 쉘에 의해 장래 작성되는 모든 프로세스에 대해서 유효하게 하기 위해서는, 쉘에 의해 직접 실행할 필요가 있습니다. 따라서, limit 하 csh(1) 의 편입 명령입니다.

통상의 방식에서는 제한치를 넘어 버리는 경우는, 시스템은 데이터 또는 스택 스페이스의 확장을 거부합니다. 데이터 스페이스 제한치에 이르렀을 경우에 brk(2) 콜이 실패하거나 스택 제한치에 이르렀을 경우는 그 프로세스는 중지됩니다(스택을 확장할 수 없기 때문에, 시그널을 보내는 방법이 없습니다! ).

너무 큰 파일을 작성하는 것 같은 파일 I/O 조작을 실시하면, 시그널 SIGXFSZ 하지만 생성됩니다만, 이것은 통상은 프로세스를 종료시킵니다만, 포착할 수 있는 경우도 있습니다. cpu 시간의 제한치를 넘었을 경우는, 시그널 SIGXFSZ 하지만 위반하고 있다 프로세스에 보내집니다. 그 시그널을 처리하는 시간을 허락하기 위해서(때문에), CPU 시간제한치를 올리는 것으로 5 초간의 유예가 프로세스에게 줄 수 있습니다.

참조
csh(1)

역사
vlimit() 함수는, 4.2BSD 에 나타났습니다.

버그
LIM_NORAISE (은)는 이미 존재하지 않습니다. 이 함수는, 아직도 재실장되고 있지 않습니다.