The POSIX System Interface Specification says:
The default action for
SIGCONT
is to resume execution at the point where the process was stopped, after first handling any pending unblocked signals.
What does "after" mean here? Shouldn't it be "before" instead? Is there some example to show what it means?
Similarly from APUE:
Since the process group is orphaned when the parentterminates, POSIX.1 requires that every process in the newly orphaned process group that is stopped (as our child is) be sent the hang-up signal (
SIGHUP
) followed by the continue signal (SIGCONT
)This causes the child to be continued, after processing the hang-up signal. The default action for the hang-up signal is to terminate the process, so we have to provide a signal handler to catch the signal. We therefore expect the printf in the sig_hup function to appear before the printf in the pr_ids function.
Shouldn't "after" be "before" instead?
At order of SIGCONT
and SIGHUP
sent to orphaned linux process group seems to suggest "before" instead of "after" in the above two quotes, or I misunderstand it:
The
SIGHUP
cannot be delivered until the child's execution is resumed. When a process is stopped, all signal delivery is suspended except forSIGCONT
andSIGKILL
.So, the
SIGHUP
does arrive first, but it cannot be processed until the SIGCONT awakens the process execution.
Thanks.