getrlimit

Autres langues

Langue: ko

Version: 1993년 7월 23일 (fedora - 25/11/07)

Section: 2 (Appels système)

이름

getrlimit, getrusage, setrlimit - 자원(resource)의 제한값과 사용값을 알아내거나 설정한다.

사용법

#include <sys/time.h>
#include <sys/resource.h>
#include <unistd.h>

int getrlimit (int resource, struct rlimit *rlim);
int getrusage (int who, struct rusage *usage);
int setrlimit (int resource, const struct rlimit *rlim);

설명

getrlimitsetrlimit는 각각 자원의 제한값들을 알아내거나 설정한다. resource는 다음 중 하나여야 한다:

RLIMIT_CPU     /* 초 단위의 CPU 시간 */

RLIMIT_FSIZE   /* 최대 파일 크기 */

RLIMIT_DATA    /* 최대 데이타 크기 */

RLIMIT_STACK   /* 최대 스택 크기 */

RLIMIT_CORE    /* 최대 코어 파일 크기 */

RLIMIT_RSS     /* 최대 거주 집합 크기 */

RLIMIT_NPROC   /* 최대 프로세스 수 */

RLIMIT_NOFILE  /* 최대 열 수 있는 파일의 수 */

RLIMIT_MEMLOCK /* 최대 잠긴 기억 장소 주소 공간 */

RLIMIT_AS              /* 주소 공간(가상 메모리) 제한값 */

만일 RLIM_INFINITY로 설정되었다면 자원은 무제한이다. RLIMIT_OFILERLIMIT_NOFILE에 대한 BSD 이름이다.

rlimit 구조체는 다음과 같다:

 struct rlimit
 {
         rlim_t  rlim_cur;
         rlim_t  rlim_max;
 };
 

getrusage는 현재 자원의 사용값을 반환한다. whoRUSAGE_SELFRUSAGE_CHILDREN 중 하나이다.

 struct rusage
 {
         struct timeval ru_utime;        /* 사용된 사용자 시간 */
         struct timeval ru_stime;        /* 사용된 시스템 시간 */
         long    ru_maxrss;              /* 최대 거주 집합 크기 */
         long    ru_ixrss;                       /* 총 공유 메모리 크기 */
         long    ru_idrss;                       /* 공유되지 않은 총 데이타 크기 */
         long    ru_isrss;                       /* 공유되지 않은 총 스택 크기 */
         long    ru_minflt;              /* 페이지 반환(reclaims) */
         long    ru_majflt;              /* 페이지 폴트 */
         long    ru_nswap;                       /* 스왑 */
         long    ru_inblock;             /* 블럭 입력 연산 */
         long    ru_oublock;             /* 블럭 출력 연산 */
         long    ru_msgsnd;              /* 보낸 메세지 */
         long    ru_msgrcv;              /* 받은 메세지 */
         long    ru_nsignals;            /* 받은 시그널 */
         long    ru_nvcsw;                       /* 자발적인 문맥 교환 */
         long    ru_nivcsw;              /* 비자발적인 문맥 교환 */
 };
 

반환값

성공시, 0이 리턴된다. 에러시, -1이 리턴되며, errno는 적당한 값으로 설정된다.

에러

EFAULT
rlimusage가 접근할 수 없는 주소 공간을 가리키고 있다.
EINVAL
getrlimit또는 setrlimit가 유효하지 않은 resource로 호출되었거나, getrusage가 유효하지 않은 who로 호출되었다.
EPERM
비-슈퍼 유저가 소프트 제한값과 하드 제한값을 현재의 하드 제한값보다 높은 값으로 증가시키기 위해 setrlimit()를 사용하였거나, 슈퍼 유저가 현재 커널 최대값보다 큰값으로 RLIMIT_NOFILE을 변경하려고 시도했다.

호환

SVr4, BSD 4.3

관련 항목

ulimit(2), quotactl(2)

역자

정강훈 <skyeyes@soback.kornet.net>, 2000년 5월 12일