background child process

  • Thread starter Joel VanderWerf
  • Start date
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....
 
N

nobu.nokada

Hi,

At Sat, 3 Jan 2004 07:32:51 +0900,
Joel said:
How can one start a background child process in a platform independent
manner (i.e., no fork)?

I agree it should be there and kind of feel I've suggested it a
couple times.
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).
No.

Can I do this with pipes? How will I know when the child has exited or died?

$ ruby -e 'f = IO.popen("sleep 5"); p Process.waitpid(f.pid); p $?'
14425
# said:
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.)

IO.popen works on also Windows.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,774
Messages
2,569,596
Members
45,130
Latest member
MitchellTe
Top