我正在使用 IO.popen
运行 curl
命令(八位字节流 POST)。我复制命令并在命令行上运行它并且它有效。然而,使用 popen
在 Ruby 中运行它会导致流在我的服务器上意外结束并且 Ruby 脚本挂起,curl
无休止地运行。
这是我正在做的:
curl = "curl "
curl += "--cookie \"JSESSIONID=#{@sessionid}\" "
curl += "-H \"Content-type:application/octet-stream\" "
curl += "-X POST "
curl += "-o \"#{responseFile}\" "
curl += "--data-binary \"@#{filename}\" "
curl += "\"#{url}\""
puts "command: #{curl}"
IO.popen(curl, "r") { |out|
out.readlines
}
# Script never makes it to here
我一定是在做傻事。这是什么?
我正在使用 Ruby 1.8.6
最佳答案
popen
还为 curl 提供了一个管道以从 读取数据,如本例所示:
$ echo -e 'foo\nbar\nzoo' | \
ruby -e 'pipe = IO.popen("grep oo", "r") {|out| p out.readlines}'
["foo\n", "zoo\n"]
我猜 curl 也想从 stdin 向服务器发送 POST,但那里什么也没有,所以超时 30 秒。
关于ruby - 为什么 IO.popen 卡在有效命令上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8302951/