FELLIN, JEFF K (JEFF) <j...@research.att.com> wrote, on 04 Nov 2016: > > I'm trying to verify my understanding of the signal specifications. > > On the signal.h man page SA_RESETHAND is defined as: > Causes signal dispositions to be set to SIG_DFL on entry to signal handlers > On the sigaction() man page action of SA_RESETHAND is defined: > If set, the disposition of the signal shall be reset to SIG_DFL and the > SA_SIGINFO flag shall be cleared on entry to the signal handler. > > My questions are: > > 1) When using a signal handler defined by sa_handler should signal(2) > return SIG_DFL for the old signal value? > > 2) When using a signal handler defined by sa_handler or sa_sigaction > should the signal handler value returned in oact by the call sigaction(sig, > NULL, &oact) be set to SIG_DFL? > > 3) When using a handler defined by sa_sigaction should the sa_flags value > returned in oact by the call: sigaction(sig, NULL, &oact) not have SA_SIGINFO > set? >
The answer to all three is "Yes, except for SIGILL and SIGTRAP". > My tests on different versions of UNIX indicate > > 1) SIG_DFL is not always set on entry to signal handlers when the > SA_RESETHAND flag is set via sigaction(2) > If the cases where it was not set were SIGILL and SIGTRAP, that's what the standard requires. Otherwise, it's a non-conformance of the systems you tested. There should not be any certified systems that don't conform here, as this is covered by the test suites. > 2) The SA_SIGINFO flag is not cleared when returned by sigaction(2) when > used in the signal handler. > Again, this is expected for SIGILL and SIGTRAP, but is a non-conformance in other cases. It's possible that some certified systems might not conform, because there was a bug in the test for this, which I only fixed back in May of this year. (I assumed that what prompted me to fix the bug was a discussion on this mailing list, but if so, I can't find it in my archive.) -- Geoff Clare <g.cl...@opengroup.org> The Open Group, Apex Plaza, Forbury Road, Reading, RG1 1AX, England