OK, I'll admit it. I'm spinning my wheels here, and need a clunk on
the side of the head to get some traction.
I'm trying to run a subprocess, reading back its standard output and
standard error, along wth the process's exit status.
This has to work under Linux, W95, and NT.
* Attempt 1
IO.popen(cmd + " 2>&1", "w+") do |pipe|
pipe.puts stuff
pipe.close_write
result = pipe.readlines
end
status = $?
This works fine under Linux and W95. However, it fails under NT. The
reason seems to be that the replacement for popen (mypopen in
win32.c) notices the redirection on the command line, attempts to
run the command with 'cmd /c' prefixed, and fails for some
reason. (The NT version also fails to run any internal command such
as 'dir' for the same reason).
* Attempt 2
arr = open3(cmd)
<stuff>
The problem here is that the latest open3 does a fork within a fork
(why? it can't be a session thing as there's no setsid), and there's
no way to get the exit status of the grandchild process.
So:
1. Is the popen problem a known NT bug?
2. What can I do?
Thanks
Dave