У меня есть этот код:C++ ограничения по времени процессора для обработки
pid_t vPid=fork();
int vStat;
switch(vPid){
case -1: perror("fork");
exit(1);
case 0:
//proces fiu
if(chdir("/var/code/p1")==0){
system("make clean");
system("make");
//limit on data
struct rlimit vLimD;
vLimD.rlim_cur = 10000000;//10Mb
vLimD.rlim_max = 10000000; //10Mb
setrlimit(RLIMIT_DATA, &vLimD);
//limit on cpu time
struct rlimit vLimCPU;
vLimCPU.rlim_cur = 10;//10 sec
vLimCPU.rlim_max = 10;//10 sec
cout<<"limits return "<<setrlimit(RLIMIT_CPU, &vLimCPU);
execl("/var/code/p1/p1","",NULL);
}
else {exit(1);}
break;
default:
while(wait(&vStat)!=vPid);
break;
}
Процесс/вар/код/p1/p1 выполняется в течение 40 секунд, и я хочу, чтобы ограничить этот процесс, чтобы работать в течение всего 10 секунд vLimitCPU(setrlimit)
, и через 10 секунд что-то делать, но не не печатать ничего подобного «пределы возвращаемого значения» (первые setrlimit
возвращает 0)