33 lines
1.3 KiB
C
33 lines
1.3 KiB
C
/*
|
|
Pobranie i ustawienie wielkosci segmentu danych dla procesu. Polecenia getrlimit i setrlimit sluza do pobrania i ustawiania roznych limitow w systemie operacyjnym. Nie na wszystkich systemach operacyjnych program powoduje blad z powodu przekrocenia limitu segmentu danych dla procesu, efekt działania programu zalezy od konfiguracji systemu operacyjnego. Program ma problemy z poprawna praca na wszelkich emulatorach systemow typu uniksowego.
|
|
*/
|
|
|
|
#include<stdio.h>
|
|
#include<sys/resource.h>
|
|
#include<stdlib.h>
|
|
|
|
int main(int argc) {
|
|
struct rlimit pomoc;
|
|
char *p1, *p2;
|
|
|
|
getrlimit(RLIMIT_AS, &pomoc);
|
|
printf("soft: %llu, hard: %llu\n", pomoc.rlim_cur, pomoc.rlim_max);
|
|
pomoc.rlim_cur = 100;
|
|
if (argc == 1) {
|
|
setrlimit(RLIMIT_AS, &pomoc);
|
|
}
|
|
getrlimit(RLIMIT_AS, &pomoc);
|
|
printf("soft: %llu, hard: %llu\n", pomoc.rlim_cur, pomoc.rlim_max);
|
|
printf("Przydzielam pamiec dla zmiennej p1.\n");
|
|
if (!(p1 = (char *) malloc(5000))) {
|
|
perror("Brak pamieci dla zmiennej p1.\n");
|
|
return -1;
|
|
}
|
|
printf("Przydzielam pamiec dla zmiennej p2.\n");
|
|
if (!(p2 = (char *) malloc(7000))) {
|
|
perror("Brak pamieci dla zmiennej p2.\n");
|
|
return -1;
|
|
}
|
|
printf("Poprawnie zakonczylem przydzial pamieci.\n");
|
|
return 0;
|
|
} |