使用php编译c ++代码

时间:2013-02-05 16:27:21

标签: php compilation

我正在为我们学校培养一名在线评委(,如topcoder / codeforces.com )。
但我不知道如何开始 - 如何使用php评估某人的c ++代码 另请注意,代码将使用c ++&我需要提供一些存储在文件中的输入 我在设计网站(在php中)和测试输出产生时没有问题 这将是有利的,如果我可以使用一些外部网站(我没有自己的服务器,资金不那么免费的服务器!)。

谢谢先进。 - 亚当

1 个答案:

答案 0 :(得分:1)

最明显的方法是在上传的源代码上通过system / exec调用编译器。可能这是唯一的方法。我怀疑有PHP的C ++解析器/解释器(理论上它可能非常复杂和毫无意义)。

如果您没有专用托管,这将很难做到,因为很可能每个托管服务提供商都阻止对system / exec的调用,即使他们没有,您也无法访问编译器。

如果您不完全信任您的用户(您的同学可以破解)您还必须使用代码构建的“沙箱”应用程序。您需要确保没有人能够读取您的文件系统/删除文件/连接到数据库等。您可以通过以下一个或多个来执行此操作:

  • 只允许访问您信任的标题/库的封闭列表(数学等)
  • 将应用程序作为仅为此目的创建的用户运行(最简单的解决方案)
  • 使用虚拟机

您可以查看:

Creating an online judge from scratch

也许这会很有用:

https://github.com/anomit/loki