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.