A process has three choices for dealing with a signal.
Ignore the signal. This option isn’t recommended for signals that denote a hardware exception, such as dividing by zero or referencing memory outside the address space of the process, as the results are undeﬁned.
Let the default action occur. For a divide-by-zero condition, the default is to terminate the process.
Provide a function that is called when the signal occurs (this is called ‘‘catching’’ the signal). By providing a function of our own, we’ll know when the signal occurs and we can handle it as we wish.
I think there is only two choices - the last two listed above, and both of them can "ignore the signal" (the first choice listed above).
Is my understanding correct, or are there indeed three nonoverlapping choices as in the quote? Why?
The book mentions that the default action of some signal is to ignore it. Does it mean the action of the signal is SIG_IGN or SIG_DFL or an empty function? For example:
The default action for SIGCHLD is to be ignored. We describe these options in Chapter 10.
SIGCONT: The default action is to continue a stopped process, but to ignore the signal if the process wasn’t stopped.