Condition step for POSIX signals under Language Environment
You might find it helpful to read about the Language Environment condition step before reading this topic.
- At each stack frame (or until the condition is handled, or all
of your application's stack frames have been visited), do the
following:
- If a user-written condition handler registered using the CEEHDLR callable service is present on the stack frame, Language Environment gives it a chance to handle the condition.
- If the signal action was set in a call to signal(),
the action requested by the signal handler takes place.
If the signal action was set in a call to sigaction(), sigactionset() or bsd_signal(), the action is ignored until a later step.
- When all application stack frames have been visited, the incurring
stack frame's language defaults are applied.
C applies its default only if the signal action was set in a call to signal(). Otherwise, the signal is percolated.
- If the signal is percolated from the previous step, the following
occurs:
- If the signal is a POSIX signal whose signal action was set in a call to sigaction(), sigactionset() or bsd_signal(), the POSIX action (SIG_DFL or a catcher) is applied.
- For any other signal, Language Environment applies its default actions (described in Table 1). If the condition that the signal represents is of severity 2 or greater, Language Environment promotes the condition to Termination Imminent due to an Unhandled Condition (T_I_U).