簡體   English   中英

一些命令掛起了我的Ruby Web應用程序

[英]Some commands hang my Ruby web app

我正在玩Rails和Sinatra,我想在服務器上執行命令。 這些命令是從表單輸入的。 關鍵是,如果我輸入需要輸入的命令,則整個應用都會掛起。 這是我用來執行它們的代碼:

@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解釋器運行Sinatra,但它確實有效。 在1.8.6下,則不是。 如果他願意,一個mod可以解決這個問題。

嘗試將/ dev / null管道到您的子進程中:

IO.popen("#{params[:command]} </dev/null") do ...

解決方案:我只記得我去年在這里問過有關Ruby線程行為的問題: 為什么它像沒有線程一樣在運行? 我嘗試使用1.9.1解釋器運行Sinatra,但它確實有效。 在1.8.6下,則不是。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM