Is there any standard Ruby way of creating a bidirectional pipe or socketpair? I want to pass a single IO-like object around, but to be able to both read and write from the other end. (What I'm actually trying to do is to put a facade around Net::SSH so that the command channel can be passed in as a proxy to Net::Telnet, but I can think of other uses of this) IO.popen(..., "w+") does make such a bidirectional pipe, but as far as I can see only for communicating with a child process. Any ideas? Thanks, Brian.