如何动态编译和执行代码


How to compile and execute code dynamically?

有一些网站(比如这个网站)允许用户提交不同语言的代码,系统对它们进行编译并执行测试用例。作为一名开发人员,我很想知道他们是如何做到这一点的,以及他们是如何支持多种语言(PHP、Python、C、。net、javascript)的?

是否有可能提交的代码是恶意的,从而危及他们执行代码的环境?

谢谢。

我很想知道他们是如何做到这一点的,以及他们是如何支持多种语言(PHP, Python, C, .NET, javascript)的?

Simple:安装多个语言安装,并为给定的输入调用正确的语言(当然是由用户提供的)。

是否有可能提交的代码是恶意的,从而危及他们执行代码的环境?

当然可以。然而,有无数可能的对策。以多年来开发的各种形式对流程进行沙盒,在给定时间后杀死流程,防止访问潜在的危险功能,等等。请参阅Codepad的about页面,了解真正的网站对此有何看法。

我不能代表那个特定的站点,但通常他们会创建一个受限的环境,称为沙盒。在这种环境中,他们可以进一步限制在那里运行的程序的函数可用性。这也可以通过阻止语言中的某些API调用来实现。

Chroot在*nix上是创建沙盒的一种方法