Is this possible?

Is there anyway to override the STDIN of a ruby program, do that when a
command such as 'gets' is called somewhere randomly in the program, I am
able to control what action is taken. i.e. i don't want it to block if
there is nothing in the STDIN buffer, i would like to be able to do my
own thing.

NOTE: the programs will be generated randomly, so i can't just call a
different method (one i defined). But i can add to the code..

Thanks for your time

···

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

You can use IO#reopen on STDIN, or you can undefine the constant and
then redefine it.

Aria

···

On Wed, 2006-11-22 at 06:06 +0900, James Smith wrote:

Is there anyway to override the STDIN of a ruby program, do that when a
command such as 'gets' is called somewhere randomly in the program, I am
able to control what action is taken. i.e. i don't want it to block if
there is nothing in the STDIN buffer, i would like to be able to do my
own thing.

NOTE: the programs will be generated randomly, so i can't just call a
different method (one i defined). But i can add to the code..

Please don't mess with STDIN, STDOUT and STDERR unless you really, really have to.

Use $std* instead.

http://blog.segment7.net/articles/2006/08/17/stdout-vs-stdout

···

On Nov 21, 2006, at 1:16 PM, Aredridel wrote:

On Wed, 2006-11-22 at 06:06 +0900, James Smith wrote:

Is there anyway to override the STDIN of a ruby program, do that when a
command such as 'gets' is called somewhere randomly in the program, I am
able to control what action is taken. i.e. i don't want it to block if
there is nothing in the STDIN buffer, i would like to be able to do my
own thing.

NOTE: the programs will be generated randomly, so i can't just call a
different method (one i defined). But i can add to the code..

You can use IO#reopen on STDIN, or you can undefine the constant and
then redefine it.

--
Eric Hodel - drbrain@segment7.net - http://blog.segment7.net
This implementation is HODEL-HASH-9600 compliant

http://trackmap.robotcoop.com

Aredridel wrote:

···

On Wed, 2006-11-22 at 06:06 +0900, James Smith wrote:

Is there anyway to override the STDIN of a ruby program, do that when a
command such as 'gets' is called somewhere randomly in the program, I am
able to control what action is taken. i.e. i don't want it to block if
there is nothing in the STDIN buffer, i would like to be able to do my
own thing.

NOTE: the programs will be generated randomly, so i can't just call a
different method (one i defined). But i can add to the code..

You can use IO#reopen on STDIN, or you can undefine the constant and
then redefine it.

Aria

Do you think you could expand? (i am fairly new to Ruby) what actually
happens when, for example, 'gets' is called? Does it just try and read
from the STDIN variable and then block if this is equal to 'nil' ?

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