Wow, Thanks for all the help.
So far I count three suggestions, 

  use exec
  use pipe
  use thread

Being a novice at this, I would like to ask for some
clarification of which might be best for me to investigate
first. But first, let me point out that the current
implementation fork is inside an #each loop:

> class Batch
> 
>  def launch
     @jobs.each { |job|
>      job.pid = Process.fork { redirect(job) }
>      @job_table[pid] = job
     }
>  ensure
>    wait
>  end#launch
  end#Batch

In this case, I think that pipe may have to be excluded.
Is that so?
What does exec give me that system doesn't?
If I use thread (and system or exec), won't each
thread be blocked by the call to system/exec?

Thanks

-- 
Jim Freeze
If only I had something clever to say for my comment...
~