POSIX permits the Right Thing (resetting SIGCHLD, as we do), but doesn't 
require it.  Document both that we do it and that it's not portable to 
require it.


I'm moderately concerned that the first bit should be merged into the 
sentence at the start of the context.  Which is clearer, what I have in 
the diff:
     Signals set to be ignored in the calling process are set to be ignored in
     the new process.  Signals which are set to be caught in the calling
     process image are set to default action in the new process image.  As an
     exception, if SIGCHLD is ignored then it is reset to the default action.

or should the descriptions be merged:
     Signals other than SIGCHLD set to be ignored in the calling process are
     set to be ignored in the new process.  SIGCHLD and signals which are set
     to be caught in the calling process image are set to the default action
     in the new process image.

or maybe:
     Except for SIGCHLD, signals set to be ignored in the calling process are
     set to be ignored in the new process.  SIGCHLD and signals which are set
     to be caught in the calling process image are set to the default action
     in the new process image.

What phrasing is clearest?

Jason, HELLLLLP!



Philip Guenther

Index: sys/execve.2
===================================================================
RCS file: /cvs/src/lib/libc/sys/execve.2,v
retrieving revision 1.46
diff -u -p -U5 -r1.46 execve.2
--- sys/execve.2        10 Sep 2015 17:55:21 -0000      1.46
+++ sys/execve.2        11 Oct 2015 06:20:59 -0000
@@ -124,10 +124,13 @@ many libraries make assumptions about th
 Signals set to be ignored in the calling process are set to be ignored in
 the
 new process.
 Signals which are set to be caught in the calling process image
 are set to default action in the new process image.
+As an exception, if
+.Dv SIGCHLD
+is ignored then it is reset to the default action.
 Blocked signals remain blocked regardless of changes to the signal action.
 The signal stack is reset to be undefined (see
 .Xr sigaction 2
 for more information).
 .Pp
@@ -321,5 +324,14 @@ If a program is
 to a non-superuser, but is executed when the real
 .Em uid
 is
 .Dq root ,
 then the process has some of the powers of a superuser as well.
+.Pp
+.St -p1003.1-2008
+permits
+.Nm
+to leave
+.Dv SIGCHLD
+as ignored in the new process; portable programs cannot rely on
+.Nm
+resetting it to the default disposition.

Reply via email to