int getrlimit (int resource, struct rlimit *rlim);
int getrusage (int who, struct rusage *usage);
int setrlimit (int resource, const struct rlimit *rlim);
RLIMIT_CPU /* 초 단위의 CPU 시간 */
RLIMIT_FSIZE /* 최대 파일 크기 */
RLIMIT_DATA /* 최대 데이타 크기 */
RLIMIT_STACK /* 최대 스택 크기 */
RLIMIT_CORE /* 최대 코어 파일 크기 */
RLIMIT_RSS /* 최대 거주 집합 크기 */
RLIMIT_NPROC /* 최대 프로세스 수 */
RLIMIT_NOFILE /* 최대 열 수 있는 파일의 수 */
RLIMIT_MEMLOCK /* 최대 잠긴 기억 장소 주소 공간 */
RLIMIT_AS /* 주소 공간(가상 메모리) 제한값 */
만일 RLIM_INFINITY로 설정되었다면 자원은 무제한이다. RLIMIT_OFILE는 RLIMIT_NOFILE에 대한 BSD 이름이다.
rlimit 구조체는 다음과 같다:
struct rlimit
{
rlim_t rlim_cur;
rlim_t rlim_max;
};
getrusage는 현재 자원의 사용값을 반환한다. who는 RUSAGE_SELF나 RUSAGE_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; /* 비자발적인 문맥 교환 */
};