@luislavena thanks for the info. Regarding terminating child processes with `INT` - it works from what I can tell. 

```
irb(main):002:0> pid = Process.spawn('phantomjs.exe', :out=>'/dev/null', :in=>'/dev/null'))
=> 6068
irb(main):003:0> Process.kill('INT', pid)
=> 1
```

The exit code 1 means to me that the process was terminated unexpectedly which is what I would expect to see on any platform. What is the exit code on OSX/Linux? This was tested on my Windows 7 workstation. 

More often than not, the 2 seconds is enough time to close down the process. I would recommend increasing that time out however just to be sure (or spawning a thread to monitor the timeout).