如何在C语言中限制执行时间

3

我不是一个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
C# 不是 C,请更正您的标签。 - Steve
1
限制执行时间是什么意思? - masoud
2个回答

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 

我想在同一个脚本中编写它,我已经查看了其他脚本,并收集了这个:init_rand(time(NULL)); - user2298995

0

如果你正在Linux下使用GCC进行编译,那么可以按照以下步骤:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接