我不是一个大C专家,这就是我问这个(可能)简单问题的原因。 我有一个用C编写的脚本,我想用输入来限制执行时间。
像: ./script.c input1 input2 input3 input4
Input4必须是以秒为单位的时间限制。
在php中,它会是这样的:
$_GET['time'] = $time;
max_execution_time($time);
或set_time_limit($time)
然后我会像这样运行它:http://domain.com/script.php?time=60
我认为init_rand(time(NULL));
应该适用于时间限制,但我如何从“GET”(input4)中获取变量?
答案 0 :(得分:3)
可能你可以作为另一个程序的孩子运行这个程序。
if ((pid = fork()) < 0) {
exit(1);
} else if (pid == 0) {
execvp("this prog", argv);
} else {
sleep(atoi(argv[4]);
kill(pid, SIGTERM);
}
或者您可以使用bash脚本来完成这项工作。
./thisprog $1 $2 $3 &
sleep $4
kill $! 2>/dev/null
答案 1 :(得分:0)
如果您使用GCC
在Linux中进行编译,如下所示,
gcc ./a.out input1 input2 input3 input 4
您可以使用功能setrlimit()
设置限制。
以下代码直接调用C程序中的ulimit
命令,
system(ulimit -t TIME_LIMIT);
如果您想设置用户定义的限制,那么以下代码可能对您有帮助,
int i;
char com[100];
i=atoi(argv[4]);
sprintf(com,"ulimit -t %d",i);
system(com);