gpt4 book ai didi

c - 如何在linux上设置gcc编译.c文件的超时

转载 作者:行者123 更新时间:2023-11-30 18:59:25 28 4
gpt4 key购买 nike

我正在尝试在 Linux 机器上使用 gcc 通过我的 php 脚本编译 C 代码。但如果 C 代码包含无限循环,编译器就会卡住。

我的 PHP 脚本是这样的..

shell_exec('gcc input.c -o output 2> compile.txt');
$output=shell_exec('./output');

“input.c”文件是这样的..

#include<stdio.h.
void main()
{
while(1)
prinf("This is infinite loop");
}

当我编译 PHP 代码时,它给出了一个

**PHP Fatal error:  Out of memory (allocated 403177472) (tried to allocate 804896768 bytes)**

我尝试过超时 5 秒: $output=shell_exec('./output');

但是它不起作用,尽管如果我这样做它就会起作用..

 int i;
while(1)
{
scanf("%d",&i);
}

..在我的 input.c 文件中。我已经搜索了很多但徒劳..我做错了什么?

最佳答案

第一点是,卡住的不是编译器。编译器可以很好地编译代码。在执行过程中,您的代码将进入无限循环。因此,如果您的第一个代码,它只是继续执行,没有任何暂停或退出,并且一直占用 CPU,给人一种“被卡住”的感觉。

关于您的第二个代码的工作原理,这是因为您正在暂停以获取输入。但是,同样,在这种情况下,您未能为程序提供退出。因此,实际上,第二个代码与第一个代码相同,但它只是不占用 CPU。

只有一种方法可以纠正此问题,即修改“C”代码,使其不出现没有任何退出的无限循环。

示例:

int i;  
while(1)
{
scanf("%d",&i);
if(0 == i)
{
break; //Just an example as to how you can exit from an infinite loop
}
}

关于c - 如何在linux上设置gcc编译.c文件的超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11464772/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com