【发布时间】:2011-11-28 21:59:00
【问题描述】:
我正在使用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
【问题讨论】:
-
我将 stdout 和 stderr 都通过管道传输到一个文件,该文件是该 pastebin 链接的来源。
-
是的,我的服务器无法读取流,因为它意外到达 eof,所以我收到了从服务器发回的错误消息。它优雅地失败了,但仍然失败了。
-
您是否尝试过不同版本/发行版的 Ruby?
-
为什么需要打开管道?试试
`#{curl}`?