How can one start a background child process in a platform independent manner (i.e., no fork)? With 'system "something&"', the process is started in the background, but it is not a child, so I can't wait for it to finish: $ ruby -e 'system "sleep 5&"; Process.wait' -e:1:in `wait': No child processes (Errno::ECHILD) from -e:1 Anyway, I don't know if the 'system "something&"' construct even works on windows (I'm not near a windows box today, or I'd test it). Can I do this with pipes? How will I know when the child has exited or died? I'm reluctant to use pipes because I don't care about stdin/stdout and don't want to worry about whether win32 support is ok. I don't need pipes for commuication, since I'm communicating among processes by writing and reading locked files. Aside from that, all I need to know from the child is when it is done. (That's the only reason I wanted it to be a child in the first place, so that I could use Process.wait or Process.waitpid on it.) Thanks for any suggestions....