setrlimit
및 getrlimit
을 사용하여 Linux 자원 제어를 배우고 있습니다. 아이디어는 특정 프로세스에 사용할 수있는 메모리의 최대 양을 제한하는 것이다setrlimit가 최대 메모리 용량 제한에 작동하지 않습니다
#include <sys/resource.h>
#include <sys/time.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
// Define and object of structure
// rlimit.
struct rlimit rl;
// First get the limit on memory
getrlimit (RLIMIT_AS, &rl);
printf("\n Default value is : %lld\n", (long long int)rl.rlim_cur);
// Change the limit
rl.rlim_cur = 100;
rl.rlim_max = 100;
// Now call setrlimit() to set the
// changed value.
setrlimit (RLIMIT_AS, &rl);
// Again get the limit and check
getrlimit (RLIMIT_AS, &rl);
printf("\n Default value now is : %lld\n", (long long int)rl.rlim_cur);
// Try to allocate more memory than the set limit
char *ptr = NULL;
ptr = (char*) malloc(65536*sizeof(char));
if(NULL == ptr)
{
printf("\n Memory allocation failed\n");
return -1;
}
printf("pass\n");
free(ptr);
return 0;
}
상기 코드 제한 100 바이트 (딱딱하고 부드러운)에 메모리. 그러나 malloc
은 여전히 오류없이 반환됩니다. 코드에 문제가 있습니까? 내가 얻은 결과는 다음과 같습니다.
Default value is : -1
Default value now is : 100
pass