On Tue, May 20, 2003 at 04:18:13PM +0900, Mark Firestone wrote:
> Ok.  Thanks for that.  I guess this is going to be trial and error.  My 
> concern is that i am wasting my time trying to fix something that may be 
> working ... and that it could be DOSEMU that isn't...
> 
> I need to find a way to test it with something else... Hmmm...
> 
> So, I wonder what IO.pipes does?

A *named* pipe is something you create in the filesystem with 'mkfifo'. One
process can open it for writing, and another process open it for reading.

$ mkfifo zer
$ ls -l zer
prw-r--r--  1 brian    brian    0 May 20 11:30 zer
^
|
 `this shows it's a named pipe

I don't think DOS has any concept of named pipes.

There is no "IO.pipes" that I am aware of, but there is "IO.pipe". This
creates an *unnamed* pipe with two endpoints, already open for reading and
writing - see "man 2 pipe" for the Unix view of this, and
http://www.rubycentral.com/book/ref_c_io.html#IO.pipe
for the Ruby view.

You could then have two Ruby threads, one reading and one writing to the
same pipe, or you could fork another process (in the latter case
IO.popen("-") is simpler since it does the fork as well as the pipe
creation)

I don't think 'fork' will work in DOS, but Ruby threads should be fine:

  rd, wr = IO.pipe
  Thread.new do
    wr.print "Hello world!"
    wr.close
  end
  result = rd.read
  rd.close
  puts "I got: #{result.inspect}"

If that doesn't solve your problem, then perhaps you can describe what it is
you're trying to do?

Regards,

Brian.