我正在嘗試使用setrlimit()
來限制進程需要花費的時間。但是,當我執行像printf()
這樣的特定操作時,它似乎不起作用。setrlimit不可靠?
這是說明問題的測試程序:
#include <sys/resource.h>
#include <stdio.h>
int main(void) {
int i;
struct rlimit limit;
limit.rlim_cur = 3;
limit.rlim_max = 3; // send SIGKILL after 3 seconds
setrlimit(RLIMIT_CPU, &limit);
// doesn't get killed
for(i=0; i<1000000; i++)
printf("%d",i);
return 0;
}
但是,如果我用不同的例行像天真的斐波那契更換for循環:
int fib(int n) {
if(n<=1) return 1;
return fib(n-1)+fib(n-2);
}
int main(void) {
...
fib(100);
...
}
它完美。這裏發生了什麼? setrlimit()
簡直不可靠?
該代碼甚至沒有編譯!讓我爲你解決這個問題。 – paxdiablo 2012-07-26 01:25:23
@paxdiablo:啊謝謝!我做了一些動態編輯:[ – tskuzzy 2012-07-26 01:42:26