Ich habe diesen Code:C++ Grenze CPU-Zeit zu verarbeiten
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;
}
Der Prozess/var/code/p1/p1 läuft für 40 Sekunden, und ich möchte diesen Prozess beschränken, für nur 10 Sekunden laufen mit vLimitCPU(setrlimit)
, und nach 10 Sekunden etwas tun, ist aber nicht nichts drucken, wie „Grenzen Wert zurückgeben“ (die erste setrlimit
liefert 0)