如何限制C中的执行时间

时间:2013-04-19 11:33:35

标签: c time limit execution

我不是一个大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)中获取变量?

2 个答案:

答案 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);