我正在使用lftp
下载一些文件。下面是我正在使用的代码,我想捕获标准输出。它虽然没有显示任何内容。
如果我只是在bash中运行命令,我会将流式传输进度到stdout。我知道它的标准输出因为如果我redirect 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'回车来使stdout倒带以从同一行开始并更新,而不是为每个行换一行。也许open3无法很好地应对这一点。