OSF DCE Application Development Guide--Core Components
OSF DCE Application Development Guide—Core Components
8.2.1.1 Terminating Signals
Terminating signals result in the termination of the process by default. Whether a
particular signal is terminating or not is independent of whether it is synchronously or
asynchronously delivered.
8.2.1.2 Nonterminating Signals
Nonterminating signals do not result in the termination of the process by default.
Nonterminating signals represent events that can be either internal or external to the
process. The process may require notification or ignore these events. When a
nonterminating asynchronous signal is delivered to the process, DCE Threads awakens
any threads that are waiting for the signal. This is the only action that DCE Threads
takes because, by default, the signal has no effect.
8.2.1.3 Synchronous Signals
Synchronous signals are the result of an event that occurs inside a process and are
delivered synchronously with respect to that event. For example, if a floating-point
calculation results in an overflow, then a SIGFPE (floating-point exception signal) is
delivered to the process immediately following the instruction that resulted in the
overflow.
The default behavior of DCE Threads in DCE Version 1.0.2 when a synchronous
terminating signal occurs is to dump core; that is, to not handle the signal. This differs
from the behavior prior to DCE Version 1.0.2, in which such a signal would be turned
into an exception and propagated out to whatever process was the original owner of the
thread (namely the client, even though the exception might have occurred in the server).
Therefore, if an application using DCE Threads wants to handle such signals, it must
now set up a signal handler to do so by calling sigaction( ). Note that the new DCE
Threads behavior is in fact similar to the default behavior of most UNIX programs.
Synchronous, terminating signals represent an error that has occurred in the currently
executing thread.
8.2.1.4 Asynchronous Signals
Asynchronous signals are the result of an event that is external to the process and are
delivered at any point in a thread’s execution when such an event occurs. For example,
when a user running a program types the interrupt character at the terminal (generally
<Ctrl-c>), a SIGINT (interrupt signal) is delivered to the process.
8− 6 Tandem Computers Incorporated 124245