On 03/15/2015 08:59 AM, Josh Triplett wrote:
This patch series introduces a new clone flag, CLONE_FD, which lets the caller
receive child process exit notification via a file descriptor rather than
SIGCHLD. CLONE_FD makes it possible for libraries to safely launch and manage
child processes on behalf of their caller, *without* taking over process-wide
SIGCHLD handling (either via signal handler or signalfd).
Note that signalfd for SIGCHLD does not suffice here, because that still
receives notification for all child processes, and interferes with process-wide
signal handling.
It has been suggested (e.g.,
<https://sourceware.org/bugzilla/show_bug.cgi?id=15661#c3>) that you can
use the existing clone(2) without specifying SIGCHLD to create a new
process. The resulting child process is not supposed to show up in
wait(2), only in a waitpid(2) (or similar) explicitly specifying the
PID. Is this not the case?
--
Florian Weimer / Red Hat Product Security
On Friday 29 May 2015 09:43:35 Florian Weimer wrote:
On 03/15/2015 08:59 AM, Josh Triplett wrote:
quoted
This patch series introduces a new clone flag, CLONE_FD, which lets the
caller receive child process exit notification via a file descriptor
rather than SIGCHLD. CLONE_FD makes it possible for libraries to safely
launch and manage child processes on behalf of their caller, *without*
taking over process-wide SIGCHLD handling (either via signal handler or
signalfd).
Note that signalfd for SIGCHLD does not suffice here, because that still
receives notification for all child processes, and interferes with
process-wide signal handling.
It has been suggested (e.g.,
<https://sourceware.org/bugzilla/show_bug.cgi?id=15661#c3>) that you can
use the existing clone(2) without specifying SIGCHLD to create a new
process. The resulting child process is not supposed to show up in
wait(2), only in a waitpid(2) (or similar) explicitly specifying the
PID. Is this not the case?
Hi Florian
That sounds orthogonal to what we're looking for. Our objective is to get
notification of when the child exited without resorting to SIGCHLD. If we use
the regular clone(2) without SIGCHLD and without CLONE_FD, we get no
notification. The only way to know of the child's termination is by a blocking
waitpid(2), like you indicated, which is counter productive to our needs.
We need something we can select(2)/poll(2) on.
--
Thiago Macieira - thiago.macieira (AT) intel.com
Software Architect - Intel Open Source Technology Center
On 05/29/2015 10:27 PM, Thiago Macieira wrote:
quoted
It has been suggested (e.g.,
<https://sourceware.org/bugzilla/show_bug.cgi?id=15661#c3>) that you can
use the existing clone(2) without specifying SIGCHLD to create a new
process. The resulting child process is not supposed to show up in
wait(2), only in a waitpid(2) (or similar) explicitly specifying the
PID. Is this not the case?
Hi Florian
That sounds orthogonal to what we're looking for. Our objective is to get
notification of when the child exited without resorting to SIGCHLD. If we use
the regular clone(2) without SIGCHLD and without CLONE_FD, we get no
notification. The only way to know of the child's termination is by a blocking
waitpid(2), like you indicated, which is counter productive to our needs.
We need something we can select(2)/poll(2) on.
Thanks for the clarification. I agree that this is a separate and quite
sensible use case.
--
Florian Weimer / Red Hat Product Security