[Win32utils-devel] Making redirecting output with win32-process a bit easier

Daniel Berger djberg96 at gmail.com
Tue Feb 26 22:28:55 EST 2008


Hi all,

Inspired by Sander Pool's help request, I came up with this change to
win32-process which makes redirecting stdin/stdout/stderr less of a
hassle:

C:\Documents and
Settings\djberge\workspace\win32-process\lib\win32>diff -u
process.orig process.rb
--- process.orig        Tue Feb 26 22:23:56 2008
+++ process.rb  Tue Feb 26 22:23:20 2008
@@ -270,6 +270,10 @@
    # library. Note that the 'stdin', 'stdout' and 'stderr' options can be
    # either Ruby IO objects or file descriptors (i.e. a fileno). However,
    # StringIO objects are not currently supported.
+   #
+   # If 'stdin', 'stdout' or 'stderr' are specified, then the +inherit+ value
+   # is automatically set to true and the Process::STARTF_USESTDHANDLES flag is
+   # automatically OR'd to the +startf_flags+ value.
    #
    # The ProcessInfo struct contains the following members:
    #
@@ -381,8 +385,10 @@
             if handle == INVALID_HANDLE_VALUE
                raise Error, get_last_error
             end
-
+
             si_hash[io] = handle
+            si_hash['startf_flags'] |= STARTF_USESTDHANDLES
+            hash['inherit'] = true
          end
       }

This would eliminate the need to remember that the startf_flags and
inherit value must be set properly in order for redirection to work
with Process.create. Also, it means less typing for the user. :)

What do you think?

Regards,

Dan


More information about the win32utils-devel mailing list