To clarify further I want to capture any standard output or standard
error.
Thanks,
---------- Forwarded message ----------
From: Venks [email protected]
Date: Nov 27, 2007 3:58 PM
Subject: How to redirect a “system” standard output to a variable
To: [email protected]
Hi,
I need to redirect any standard output thrown when using a system call
into
a Ruby variable. I tried to search for a solution but couldn’t find
anything
that worked. May be I am not using the right search terms.
Here is what I am trying to do.
begin
rm somefile
end
If “somefile” doesn’t exist the OS throws the message “rm: cannot remove
`somefile’: No such file or directory” which I want to capture into a
variable.
To clarify further I want to capture any standard output or standard error.
I was dealing with this myself today. Here is the solution came
across which works for me. I’m combining the stderr with stdout from
the system call. You can remove the exitcode stuff if you dont need
it.
IO.popen(“ls nofile 2>&1”) {|f|
output = f.read
exitcode = Process.waitpid2(f.pid)[1] >> 8
puts “this is the output”
puts output
puts “this is the exit code”
puts exitcode
}
#./test.rb
this is the output
nofile: No such file or directory
this is the exit code
2