将连接设置为"关闭"在西纳特拉

时间:2015-12-05 22:10:10

标签: ruby http sinatra

我有这个简单的sinatra网络应用程序:

require 'sinatra'

get '/' do
    "Success."
end

get '/app' do
    "done"
    response["Connection"] = "Close"
    `sudo pkill blink` 
    `gpio write 0 0` 
    `sudo ./blink #{params["func"]}`
end

./blink是一个永远运行并且不会终止的程序,所以当我在浏览器中访问http://127.0.0.1/app?func=2时,我只是得到一个加载循环并且"done"未显示为结果但是我试图在/app块中运行的程序正在运行。

我认为将Connection标头设置为Close可以解决问题,但使用上面的代码(我认为会设置标头)仍然有Connection标头{ {1}}

有任何帮助吗?谢谢!

1 个答案:

答案 0 :(得分:1)

参考这个SO问题Spawn a background process in Ruby并在@andrykonchin的帮助下,我能够使用此解决我的问题:

pid = fork do
        `sudo ./blink #{params["func"]}`
    end
Process.detach(pid)