ruby-在popen3不工作的情况下获取系统命令stdout

ruby-在popen3不工作的情况下获取系统命令stdout,ruby,stdout,popen,Ruby,Stdout,Popen,我正在使用lftp下载一些文件。下面是我正在使用的代码,我想捕获标准输出。但是它没有显示任何东西 如果我只是在bash中运行这个命令,我将获得到stdout的流处理进度。我知道它的标准输出,因为如果我重定向1>/dev/null,那么输出就会停止 有人能帮我拍下这个节目的视频吗 Open3.popen3("lftp -vvv -c 'pget -n 10 ftp://mirror.us.leaseweb.net/debian-cd/7.4.0-live/i386/iso-hybrid/debia

我正在使用lftp下载一些文件。下面是我正在使用的代码,我想捕获标准输出。但是它没有显示任何东西

如果我只是在bash中运行这个命令,我将获得到stdout的流处理进度。我知道它的标准输出,因为如果我重定向1>/dev/null,那么输出就会停止

有人能帮我拍下这个节目的视频吗

Open3.popen3("lftp -vvv -c 'pget -n 10 ftp://mirror.us.leaseweb.net/debian-cd/7.4.0-live/i386/iso-hybrid/debian-live-7.4-i386-xfce-desktop.iso'") do |stdin, stdout, stderr|
            stdout.sync = true
            stdout.each { |line| puts line }
            stderr.each { |line| puts line }
end

更新:查看lftp代码时,它使用“\r”回车符使标准输出倒带到同一行的开头并进行更新,而不是为每一行换行。也许open3不能很好地处理这个问题。

您想对输出做什么?将其存储在变量中?计划是向脚本发送一个信号,如HUP或其他内容,并让它打印当前下载文件的状态。因此,除非SIGNAL=true,否则输出将为>/dev/null,然后打印一个标准输出。