我有这个简单的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}}
有任何帮助吗?谢谢!
答案 0 :(得分:1)
参考这个SO问题Spawn a background process in Ruby并在@andrykonchin的帮助下,我能够使用此解决我的问题:
pid = fork do
`sudo ./blink #{params["func"]}`
end
Process.detach(pid)