我的意思是,所有错误消息都被分成一个字符长度,这些是我的error_log中的行。例如,如果我的CGI应用程序的错误消息是“错误”,我可以看到5行文本,错误消息的每个字符一行,附加引用和其他一些时间信息。由于下载进度指示器,我的错误消息来自forked cURL进程和countains \ r \ n(回车)字符。我能做些什么来逐行获取我的cURL进程的错误输出/ stderr?
答案 0 :(得分:0)
幸运的是,我设法从stdlib找到了Popen3的解决方案:
require "open3"
cmd=%Q{curl -b cookie.txt 'http://www.example.com/file/afancyfileid/yetanotherfilename.avi' -L -O -J}
Open3.popen3(cmd) {|stdin, stdout, stderr, wait_thr|
pid = wait_thr.pid # pid of the started process.
line_no=0
stderr.each_char do |c|
if c=="\r" then
line_no+=1
STDERR.puts if line_no % 5 == 0
else
STDERR.print c if line_no % 5 == 0
end
end
exit_status = wait_thr.value
}
我只打印每5行不要让我的error_log增长得那么快。