I’m trying to write a utility to run an external process and capture
it’s stderr. It seems that IO.popen only lets me read the stdout. Any
tips for how to read stderr?
Mike
snippet of code…
def process_file(filename) @filename = filename
puts "Processing: " + @filename
cmdline = "ffmpeg -i " + @filename
ffmpeg = IO.popen(cmdline, “w+”)
ffmpeg.close_write
result = ffmpeg.gets
result.each do |line|
puts "Line from ffmpeg: " + line
end
end
This code does not work because the good stuff I want from ffmpeg went
to stderr and not stdout. Please refrain from commenting on the merits
of ffmpeg. That could go on all day.
and the command executes but my silly command (fffmpeg) writes all the
good stuff to stderr. I grep’ed the source for ffmpeg and there are :
$ grep -r fprintf.stderr * | wc
284 2271 25075
way to many for me to want to change. Is there some cool command line
trick to map stderr to stdout?