0

我将如何制作像键盘这样的网站?本质上,我希望能够在用户输入并输出成功或错误消息后编译 C 代码。如果成功,我将如何使用某些参数运行它?(这是一个编码竞赛网站)

4

1 回答 1

0

您可以使用反引号从 ruby​​ 代码中调用 C 编译器。这是 Sinatra 的一个快速而肮脏的示例:

require 'sinatra'
# Display HTML form
get '/code' do
  '<html><form method="post"><textarea name="code"></textarea><input type="submit" /></form></html>'
end

# Compile code
post '/code' do
  exec = "gcc -x c -o tst - <<EOF\n#{params[:code]} \nEOF\n"
  `#{exec}`
end

调用http://localhost:4567时,会出现一个表单,您可以在其中输入 C 代码。当您按下提交时,代码将被编译为tst可执行文件。

然后,您可以使用反引号以tst您想要的任何参数执行,类似于为编译过程本身所做的。

可以通过将反引号命令的结果存储在变量中来捕获标准输入输出,例如:

output = `tst`

可以通过重定向到 stdin 来捕获 stderr,例如:

output = `tst 2>&1`

注意:但是请小心,从安全的角度来看,这是非常危险的:任何人都可以提交任何 C 代码,并让它在您的服务器上编译和执行。

于 2011-02-18T20:41:10.123 回答