J
Joel VanderWerf
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....
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....