How to catch STDIO STREAM?

Hi, there

How can I capture a error massage from the STD IO?
For instance, I have a program call foo.exe and i run the program
./foo.exe

Then the program prints out some error messages.

How can I write a script that capture the errors and save then into a
file?

···

--
Posted via http://www.ruby-forum.com/.

-------- Original-Nachricht --------

Datum: Tue, 27 May 2008 06:52:55 +0900
Von: Cheyne Li <happy.go.lucky.clr@gmail.com>
An: ruby-talk@ruby-lang.org
Betreff: How to catch STDIO STREAM?

Hi, there

How can I capture a error massage from the STD IO?
For instance, I have a program call foo.exe and i run the program
./foo.exe

Then the program prints out some error messages.

How can I write a script that capture the errors and save then into a
file?
--
Posted via http://www.ruby-forum.com/\.

Dear Cheyne,

have a look at this:

http://www.ruby-doc.org/stdlib/libdoc/open3/rdoc/index.html

Best regards,

Axel

···

--
GMX startet ShortView.de. Hier findest Du Leute mit Deinen Interessen!
Jetzt dabei sein: http://www.shortview.de/?mc=sv_ext_mf@gmx

You do not need Ruby for that. At an arbitrary shell prompt:

foo.exe > errors.txt

Kind regards

  robert

···

On 26.05.2008 23:52, Cheyne Li wrote:

How can I capture a error massage from the STD IO?
For instance, I have a program call foo.exe and i run the program
/foo.exe

Then the program prints out some error messages.

How can I write a script that capture the errors and save then into a
file?

Thank you for your information. I tried, but it only give me result like
#<IO:0xf60e8>

So, is there a way to convert it into string?

Axel Etzold wrote:

···

-------- Original-Nachricht --------

Datum: Tue, 27 May 2008 06:52:55 +0900
Von: Cheyne Li <happy.go.lucky.clr@gmail.com>
An: ruby-talk@ruby-lang.org
Betreff: How to catch STDIO STREAM?

--
Posted via http://www.ruby-forum.com/\.

Dear Cheyne,

have a look at this:

http://www.ruby-doc.org/stdlib/libdoc/open3/rdoc/index.html

Best regards,

Axel

--
Posted via http://www.ruby-forum.com/\.

Robert Klemme wrote:

foo.exe > errors.txt

I'm sorry, I don't know Windows that well, but wouldn't that redirect stdout
and not stderr? Or maybe it would redirect both, but what I think the OP
wants is to just redirect the errors while still printing the normal messages
to the screen.

···

--
NP: Depeche Mode - Useless
Jabber: sepp2k@jabber.org
ICQ: 205544826

-------- Original-Nachricht --------

Datum: Tue, 27 May 2008 07:21:55 +0900
Von: Cheyne Li <happy.go.lucky.clr@gmail.com>
An: ruby-talk@ruby-lang.org
Betreff: Re: How to catch STDIO STREAM?

Thank you for your information. I tried, but it only give me result like
#<IO:0xf60e8>

So, is there a way to convert it into string?

Dear Cheyne,

yes, there is. Use readlines, like this:

···

-------------------------------
require "open3"

filenames=%w[file1 file2 file3]
inp,out,err=Open3.popen3("xargs","ls","-l")

filenames.each{|f| inp.puts f}
inp.close

output=out.readlines
errout=err.readlines

puts "sent #{filenames.size} lines of input"
puts "got back #{output.size} lines of output"
puts "these were the errors, if any:"
puts errout
-----------------------------------

Best regards,

Axel

Axel Etzold wrote:
> -------- Original-Nachricht --------
>> Datum: Tue, 27 May 2008 06:52:55 +0900
>> Von: Cheyne Li <happy.go.lucky.clr@gmail.com>
>> An: ruby-talk@ruby-lang.org
>> Betreff: How to catch STDIO STREAM?
>
>> --
>> Posted via http://www.ruby-forum.com/\.
>
> Dear Cheyne,
>
> have a look at this:
>
> http://www.ruby-doc.org/stdlib/libdoc/open3/rdoc/index.html
>
> Best regards,
>
> Axel

--
Posted via http://www.ruby-forum.com/\.

--
Psssst! Schon vom neuen GMX MultiMessenger gehört?
Der kann`s mit allen: http://www.gmx.net/de/go/multimessenger

Robert Klemme wrote:

foo.exe > errors.txt

I'm sorry, I don't know Windows that well, but wouldn't that redirect stdout and not stderr?

Correct.

Or maybe it would redirect both, but what I think the OP wants is to just redirect the errors while still printing the normal messages to the screen.

He did not mention explicitly which stream he wanted to redirect that's why I presented this solution. Of course, you can as well redirect stderr on Windows.

Kind regards

  robert

···

On 27.05.2008 16:23, Sebastian Hungerecker wrote: