[Win32utils-devel] Fw: re. win32-process

Daniel Berger djberg96 at yahoo.com
Mon Nov 20 23:55:23 EST 2006

Hi all,

Any ideas for the question below?  I know how to do this in theory - make the 'inherit' flag true, and set the 'stdout' and 'stderr' startf_flags hash options to something in the startup_info hash, but I wasn't sure how to do this in practice.

It would be nice if the answer could be something like this:

require 'win32/process'

app_name = 'c:\ruby\bin\ruby "' + Dir.pwd + '/test.rb"'
my_out = $stdout.clone
my_err = $stderr.clone

   :app_name => app_name,
   :inherit  => true,
   :creation_flags => Process::DETACHED_PROCESS,
   :startup_info => {
      :startf_flags => Process::STARTF_USESTDHANDLES,
      :stdout => my_out,
      :stderr => my_err

I think it would be neat if you could pass IO objects (or perhaps a fileno) to :stdout, :stderr, and :stdin directly.  Any ideas on how to do that?



----- Forwarded Message ----
From: Kirill Miazine <km at krot.org>
To: Daniel J. Berger <djberg96 at yahoo.com>
Sent: Monday, November 20, 2006 12:35:40 PM
Subject: re. win32-process

Hello Daniel,-

I'm one of those poor people who sit behind a corporate firewall that 
for some reason blocks access to useful ports. But I'm lucky enought to 
have access to port 22, so I can fire up ssh and set up port forwarding.

I used to do so with PuTTY and it worked nice. But having that terminal 
window hanging around is annoying, so I tried to find a better workaround.

I installed Ruby and win32-process. I'm new to Ruby. I'm also new to 
Windows, so I've no idea about how process managemenent, 
stdin/stdout/stderr etc happen in this environment (and where is the 
documentation?!?). (I've been programming Perl on *nix for several years.)

I find out that I use the flag Process::DETACHED_PROCESS to avoid the 
process window. But how do I suppress command output? I want something 
like "2>&1 > /dev/null".

I saw stdin, stdout and stderr options in startup_info, but I wasn't 
able to find a solution to the

require 'win32/process'

class <<$stdout
   def write(stuff)
class <<$stderr
   def write(stuff)

cmd = 'c:\Program Files\plink.exe -batch -N -load proxy'
p = Process.create(:app_name => cmd,
                    :creation_flags => Process::DETACHED_PROCESS)
Process.waitpid p.process_i

(PLink is a command-line ssh client, very handy.)

I'm grateful for any advice!

Thanks in advance!

- Kirill

Sponsored Link

Online or Campus degree Associate's, Bachelor's, or Master's
in less than one year.www.findtherightschool.com

More information about the win32utils-devel mailing list