Subject: Re: [boost] [gsoc] Boost.Process done
From: Roland Bock (rbock_at_[hidden])
Date: 2010-08-15 12:10:28
On 08/15/2010 05:34 PM, Boris Schaeling wrote:
> On Sun, 15 Aug 2010 17:23:42 +0200, Roland Bock <rbock_at_[hidden]> wrote:
>> [...]Can you give me a hint what the problem was with multi-threading
>> in previous versions?
> See <http://www.opengroup.org/onlinepubs/000095399/functions/fork.html>:
> "A process shall be created with a single thread. If a multi-threaded
> process calls fork(), the new process shall contain a replica of the
> calling thread and its entire address space, possibly including the
> states of mutexes and other resources. Consequently, to avoid errors,
> the child process may only execute async-signal-safe operations until
> such time as one of the exec functions is called."
> All previous versions of Boost.Process had called
> non-async-signal-safe functions between fork() and exec().
Phew! Our child code just uses close and dup2 between fork and exec.
Should be ok then, but this is the kind of stuff that makes me eager to
see Boost.Progress reviewed and included :-)
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk