如何制作在线C/C++编译器?

如何制作在线C/C++编译器?,c++,c,linux,C++,C,Linux,我想从用户那里获取C/C++源文件,然后在linux中使用gcc命令使其可执行。然后我将为这个可执行文件提供输入,并将输出重定向到另一个文件。我有一个示例输出文件,我将用它检查生成的输出,以便对错误或正确的答案做出决定。一句话,我想让在线法官韦斯特 但我不知道如何处理用户提供的无限循环问题。就像让用户提交以下代码一样 while(1){ } 我知道会有更多的威胁,但我如何处理这些问题呢。我想知道人们如何制作像uva在线法官或其他在线法官网站。 如果你们中有人有想法,请帮助我。关于代码判断网站

我想从用户那里获取C/C++源文件,然后在linux中使用gcc命令使其可执行。然后我将为这个可执行文件提供输入,并将输出重定向到另一个文件。我有一个示例输出文件,我将用它检查生成的输出,以便对错误或正确的答案做出决定。一句话,我想让在线法官韦斯特

但我不知道如何处理用户提供的无限循环问题。就像让用户提交以下代码一样

while(1){

}
我知道会有更多的威胁,但我如何处理这些问题呢。我想知道人们如何制作像uva在线法官或其他在线法官网站。
如果你们中有人有想法,请帮助我。

关于代码判断网站?这是一种幼稚的解决方案,但如果指定了严格的时间限制,您可能可以使用该命令。您只需要安装它并通过它运行编译的程序。

看一看,基本上您要做的就是设置一个超时。如果超时过期,执行可执行文件的进程将被终止


为了响应@bitmask,这是完全正确的,安全性是一个问题。然而,你可以通过创建一个沙盒并分配良好的权限来完成这一步。

时间框。将编译作为一个单独的进程/作业生成,并在N秒后将其杀死,向用户返回一个适当的错误。

老实说,不要这样做

如果你在计时方面遇到了问题,你会给自己造成一个巨大的安全漏洞,所有恶意代码用户都可以让你的服务器执行。我不知道那边的人是如何处理恶意代码的,但这可能不是小事

与其重新发明轮子,不如使用一个现有的网站,或者让人检查你的代码是否正常,如果这是对某种挑战的提交


即使您在一段时间后关闭了主进程,也没有人保证它不能启动后台进程并开始挖掘比特币等,只要它愿意。

为程序创建一个最长运行时间如何?如果不能在15秒内完成,则强制终止程序。如果你不设定固定的时间限制,停止问题的不确定性在任何情况下都会影响你。是的,我想做类似的事情。。但是我该怎么做呢。。请给出一些建议,@abelenky如何设置其运行的时间限制@bitmask?????@user2958359:超时1有什么问题?请你告诉我或者给我一些提示,让这个过程更有效率。我真的需要这方面的帮助。超时本身是低开销和高效的,但我的意思是它很幼稚,因为在运行不受信任的代码时,有很多其他事情需要担心,而这些不是由超时单独处理的。就像bitmask回答中的问题一样。timeout很可能是一个更大的解决方案的一部分,并处理您提到的特定案例,但还有其他问题也需要解决。是否有任何网站可以让我使用他们的编译器创建自己的网站?请按此顺序向codepad.org、ideone.com和pastebin.com的人或谷歌询问更多服务,但我怀疑您是否会找到现成的web编译器接口。