是否可以使用NODE.JS(或PYTHON)开发ACM ONLINE JUDGE系统?

我是一个新的,如果这个问题很容易,我为此道歉。

假设我想开发一个经典的在线评判系统,显然核心部分是

  • 获取用户的代码到一个文件
  • 在服务器上编译它
  • 在服务器上运行(用一些沙箱的东西,以防止损坏)
    • 程序退出本身,然后检查答案。
    • 或者获取程序崩溃的信号。

我想知道是否有可能使用Node.js做所有的事情,如何做沙箱的事情。 有没有编译沙箱运行中止检查的事情的例子?

另外:使用PYTHON开发这样的系统更方便吗?

提前致谢。

这些步骤大部分都是标准的 – 创build一个文件,运行一个系统调用来编译一些东西,用I / O来处理 – 我认为任何语言都应该能够做到这一点,除了“运行在一个沙箱“。 我知道几个沙盒解决scheme:

  1. 使用操作系统命令限制或删除能力(在Linux中的chroot,setrlimit,文件系统权限)
  2. 从被分级的语言中删除所有危险的function
  3. 中断系统事件
  4. 在虚拟机内运行沙箱。

这份清单可能并不详尽。 我参与的系统, http://cscircles.cemc.uwaterloo.ca使用选项#1。 同样,大部分工作都是在系统调用中完成的,所以我无法想象一种语言比另一种语言好得多。 我们使用php作为高级的东西,C使用沙箱。 这有助于回答你的问题吗?

要完成沙盒,只需简单地在一个闭包中运行代码,将所有令人担忧的调用重新分配给NaN

例如,如果代码在eval = NaN的closures中执行