我玩弄的Rails和西纳特拉,我想在服务器上执行命令。这些命令是从形式输入。问题是,如果我进入其预期的输入,我的整个应用程序挂起的命令。下面是我用来执行这些代码:

@threads << Thread.new do
    Thread.current["buffer"] = ""
    puts "starting #{params[:command]}"
    IO.popen(params[:command]) do |io|
        io.each_line {|l| Thread.current["buffer"] += l}
    end
end

该工程确定为像ls简单的命令......但例如,如果我进入pause将期望用户按任意键继续,一切都挂起。我怎样才能解决呢?

编辑:我只记得我去年问关于Ruby线程的行为此处的这是为什么运行就像是没有螺纹?。我试着使用1.9.1解释运行西纳特拉和它的工作。在1.8.6但是,它没有。如果他希望国防部可以关闭这个问题。

有帮助吗?

解决方案 2

解决方案:我只记得我去年问关于Ruby线程的行为此处的这是为什么运行就像是没有螺纹?。我试着使用1.9.1解释运行西纳特拉和它的工作。下1.8.6但是,它没有。

其他提示

尝试管道的/ dev / null的到你的孩子的过程:

IO.popen("#{params[:command]} </dev/null") do ...
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top