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)中获取变量?

4

2 回答 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 
于 2013-04-19T11:51:26.210 回答
0

好吧,如果您在 Linux 中使用GCC如下方式进行编译,

gcc ./a.out input1 input2 input3 input 4

您可以使用该功能setrlimit()设置限制。

下面的代码直接ulimit从C程序调用命令,

system(ulimit -t TIME_LIMIT);

如果您想设置用户定义的限制,那么以下代码可能会对您有所帮助,

int i;
char com[100];

i=atoi(argv[4]);

sprintf(com,"ulimit -t %d",i);
system(com);  
于 2013-04-19T11:51:37.633 回答