From: khaines@... Date: 2007-02-04T04:03:02+09:00 Subject: Re: Creating child processes in Windows? On Sun, 4 Feb 2007, Sonny Chee wrote: > Since fork is not implimented in Windows, how do you spawn subprocesses > in Windows? Does anyone have a good (Cross Platform) solution besides > Ruby Threads? Here's something that I use as part of my test support package for IOWA. It's used primarily to provide a cross platform method for doing fork & execs of processes for testing, but could, with a little TLC, be made more general. It depends on win32/process (By Daniel Berger, available on rubyforge or via "gem install win32-process") to create processes on Windows. module IWATestSupport def self.create_process(args) @fork_ok = true unless @fork_ok == false pid = nil begin raise NotImplementedError unless @fork_ok unless pid = fork Dir.chdir args[:dir] exec(*args[:cmd]) end rescue NotImplementedError @fork_ok = false begin require 'rubygems' rescue Exception end begin require 'win32/process' rescue LoadError raise "Please install win32-process." end cwd = Dir.pwd Dir.chdir args[:dir] pid = Process.create(:app_name => args[:cmd].join(' ')) Dir.chdir cwd end pid end end Kirk Haines