From: Kristof Bastiaensen Date: 2004-04-28T07:49:04+09:00 Subject: Re: popen issues Hi, It is maybe not a good idea to use /bin/bash as a pipe, because it is an interactive interpreter, and not made for pipe-communication. Normally you would just check for an end of file byte, but bash will not send you one. Is there any reason to use bash? On Wed, 28 Apr 2004 06:06:30 +0900, Hal Fulton wrote: > Here's something I've never figured out. > > Suppose I want real two-way communication with a process via popen. > This seems doable. > > But apparently the read hangs until I do a close_write; and if I > do that, I can't write again. A flush doesn't work. > > Here's what I was thinking (simplified): > > io = IO.popen("/bin/bash","r+") do |f| > f.puts "ls" > puts f.readlines > f.puts "date" > puts f.readlines > end > > I even tried this (following) abomination, to no avail: > > io = IO.popen("/bin/bash","r+") do |f| > writer = f.dup > f.puts "ls\n" > f.close_write > puts f.readlines > w = writer.dup > w.puts "date\n" > w.close_write > puts f.readlines > end > > > Can someone advise? > > > Hal