ISO-compliant implementation of signals supported by the signal() function in the C library and additional type arguments
signal() function supports a number of signals.
The following table shows the signals supported by the
signal() function. It also shows which signals use an additional
argument to give more information about the circumstance in which the signal was raised. The
additional argument is given in the
__raise(). For example,
division by floating-point zero results in a
with a corresponding additional argument of
Table 1-11 Signals supported by the signal() function
Returned when the
|SIGFPE||2||Signals any arithmetic exception, for example, division by zero. Used by hard and soft floating-point and by integer division.||A set of bits from
|SIGINT b||4||Attention request from user.||None|
|SIGSEGV b||5||Bad memory access.||None|
|SIGTERM b||6||Termination request.||None|
|SIGRTRED||8||Redirection failed on a runtime library input/output stream.||Name of file or device being re-opened to redirect a standard stream|
|SIGRTMEM||9||Out of heap space during initialization or after corruption.||Size of failed request|
|SIGPVFN||12||A pure virtual function was called from C++.||-|
Although SIGSTAK exists in signal.h, this signal is not generated by the C library and is considered obsolete.
A signal number greater than SIGUSR2 can be passed through
__raise() and caught by the default signal handler, but it
cannot be caught by a handler registered using
signal() returns an error code if you
try to register a handler for a signal number greater than SIGUSR2.
The default handling of all recognized signals is to print a diagnostic
message and call
exit(). This default behavior applies at
program startup and until you change it.
The IEEE 754 standard for floating-point processing states that the default action to an exception is to proceed without a trap. A raised exception in floating-point calculations does not, by default, generate SIGFPE. You can modify floating-point error handling by tailoring the functions and definitions in fenv.h. However you must compile these functions using a fully-conforming floating-point model, such as the armclang default.
For all the signals in the above table, when a signal occurs, if the
handler points to a function, the equivalent of
SIG_DFL) is executed before the call to the handler.
If the SIGILL signal is received by a handler specified to by the
signal() function, the default handling is reset.
The library never generates this signal. It is available for you to raise manually, if required.