[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

How to catch STDIO STREAM?

Cheyne Li

5/26/2008 9:53:00 PM

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-....

6 Answers

Axel Etzold

5/26/2008 9:58:00 PM

0


-------- 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-....

Dear Cheyne,

have a look at this:

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

Best regards,

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

Cheyne Li

5/26/2008 10:22:00 PM

0

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-....
>
> Dear Cheyne,
>
> have a look at this:
>
> http://www.ruby-doc.org/stdlib/libdoc/open3/rdoc/...
>
> Best regards,
>
> Axel

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

Axel Etzold

5/26/2008 10:38:00 PM

0


-------- 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-....
> >
> > Dear Cheyne,
> >
> > have a look at this:
> >
> > http://www.ruby-doc.org/stdlib/libdoc/open3/rdoc/...
> >
> > Best regards,
> >
> > Axel
>
> --
> Posted via http://www.ruby-....

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

Robert Klemme

5/27/2008 6:44:00 AM

0

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?

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

foo.exe > errors.txt

Kind regards

robert

Sebastian Hungerecker

5/27/2008 2:24:00 PM

0

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

Robert Klemme

5/27/2008 3:43:00 PM

0

On 27.05.2008 16:23, Sebastian Hungerecker wrote:
> 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