Ruby on rails 如何编译用户输入C程序并在RubyonRails web应用程序中显示输出?

Ruby on rails 如何编译用户输入C程序并在RubyonRails web应用程序中显示输出?,ruby-on-rails,ruby,web-applications,rubygems,gem,Ruby On Rails,Ruby,Web Applications,Rubygems,Gem,我正在尝试构建一个电子学习应用程序 用户阅读教程并尝试键入自己的C程序 我希望web应用程序获取并编译此输入,并向用户显示适当的输出 我不知道我应该如何处理这个问题……是否有任何预先存在的库或gem用于此,或者我应该从头开始编写编译器???有一个gem,您可能可以使用它。我最近也在调查类似的事情。这允许您输入一个c程序字符串并运行它 看一看,一定要看第一条评论 require 'rubygems' require 'RubyInline' class Example inline(:C) d

我正在尝试构建一个电子学习应用程序

用户阅读教程并尝试键入自己的C程序

我希望web应用程序获取并编译此输入,并向用户显示适当的输出

我不知道我应该如何处理这个问题……是否有任何预先存在的库或gem用于此,或者我应该从头开始编写编译器???

有一个gem,您可能可以使用它。我最近也在调查类似的事情。这允许您输入一个c程序字符串并运行它

看一看,一定要看第一条评论

require 'rubygems'
require 'RubyInline'
class Example
  inline(:C) do |builder|
    builder.c "int method_test1() {
      int x = 10;
      return x;
    }"
  end
end

p Example.new.method_test1 #This prints out the result of the code, and I believe also errors if there are any

我知道这不是你想要的100%的解决方案,但它可能会把你推向正确的方向。

我可以给你一些想法,就像在你的应用程序中,用户选择语言后让
C
他将编写他的代码……包装代码,并使用ruby
file
创建一个文件,如果选择C,那么文件扩展名应该是.C………在你的控制器中检查并
文件为空?
和其他。。。。。。。。现在使用
system cc program.c
。。。。。。在生产环境中运行应用程序的服务器必须安装了c….使用方法中的选项访问编译选项,如
-o
…等。对于将在c代码中放置调用或叉炸弹的人,您计划如何处理?是的….安全性将是一个问题,我想我必须先过滤输入,然后再将其传递给编译器,以便在有人键入系统调用时拒绝访问。也许我必须修改服务器上的权限设置。谢谢你指出这一点。@mu太短了:我认为编译后的代码应该运行在一个非常简单的专门构建的scratch VM上,除了终端和其他运行C代码的基本工具外,几乎没有安装任何东西。它可能应该使用不同的操作系统(C应该交叉编译到它),并在每次运行之前重置为快照。并且分配给运行代码的VM的时间/CPU数量应该严格限制。为了安全起见:按照我的第一条指令现在打开文件(如果文件保存为.c扩展名).@mu state检查任何会妨碍服务器或数据的代码,比如说
无限循环
…使用
基准测试
,以获得执行时间(如果需要)正在花费更多时间停止执行抛出验证错误…如果正在从ou服务器获取数据抛出验证错误…如果正在发送大量数据以使服务器崩溃,请获取
params
检查大小抛出验证…检查代码或文件的第一个大小…然后使用正确的c头进行检查…然后检查
main()
是否已写入