|
Boost : |
From: Angus Leeming (angus.leeming_at_[hidden])
Date: 2004-06-23 05:38:38
John Maddock wrote:
> Surely there's no need to call wait until the parent asks for the return
> value: In fact I'd kind of like the library to be similar to
> Boost.Threads - a child process is an object that can be waited upon,
> the library would only need to do something "fancy" like installing a
> signal hander, if the child object's destructor is called, without the
> object ever being waited upon.
Consider this:
int main() {
child::process mozilla;
mozilla.spawn("mozilla");
return 0;
};
You're suggestion, that child::process::~process() invokes wait() means
that this program will not exit until mozilla exits. That doesn't seem
reasonable here. Even less so if the function launching mozilla was in a
control loop...
child::process is a *handle* on the child. If the handle goes out of
scope, then you lose the abiity to communicate with the child but you
shouldn't kill it.
I think that if you want to terminate the child, then you should be
explicit about it. Either invoke process::terminate yourself or have a
wrapper class that does so when the wrapper goes out of scope.
Regards,
Angus
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk