System? exec? fork? thread? Help managing external process

McMahon, Chris wrote:

Hello...
  I'm new to Ruby and I need some help with managing an external
process. I'm on Windows, and I want to do something (overly simplified)
like this:

File.new(file_to_be_handled_by_outside_process.txt)
system ("C:\\filewatcher.exe file_to_be_handled_by_outside_process.txt")
<write stuff to file_to_be_handled_by_outside_process.txt>

  The foreign process started by system() never stops. I need to
return control to the Ruby script after the system() call so that I can
have the Ruby script generate information for the foreign process to
handle. Any suggestions would be welcome... -Chris

Just doing the system call in a thread works on windows,

Thread.new do
   system "foo"
end

# code to keep processing while foo runs...

For example:

Thread.new do
   system "sleep 10"
   puts "slept"
end

loop do
   puts "hello"
   sleep 1
end

I ran this on linux, but I'm pretty sure it works on windows too.

But you may want to consider popen, as was suggested, so you don't have concurrency problems with the two processes accessing the file.