You copied the Doc URL to your clipboard.

ISO-compliant implementation of signals supported by the signal() function in the C library and additional type arguments

Table 11 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 type parameter of __raise(). For example, division by floating-point zero results in a SIGFPE signal with a corresponding additional argument of FE_EX_DIVBYZERO.

Table 11. Signals supported by the signal() function
SignalNumberDescriptionAdditional argument

Returned when any untrapped exception is thrown, such as:

  • a negative array size is allocated through the new operator

  • an invalid dynamic cast.

This signal is only used if abort() or assert() are called by your C++ application, and --exceptions is specified.

SIGFPE2Signals any arithmetic exception, for example, division by zero. Used by hard and soft floating-point and by integer division.A set of bits from FE_EX_INEXACT, FE_EX_UNDERFLOW, FE_EX_OVERFLOW, FE_EX_DIVBYZERO, FE_EX_INVALID, DIVBYZERO [a]
SIGILL [b]3Illegal instruction.None
SIGINT [b]4Attention request from user.None
SIGSEGV [b]5Bad memory access.None
SIGTERM [b]6Termination request.None
SIGRTRED8Redirection failed on a runtime library input/output stream.Name of file or device being re-opened to redirect a standard stream
SIGRTMEM9Out of heap space during initialization or after corruption.Size of failed request
SIGPVFN12A pure virtual function was called from C++.-

Not normally used.

SIGOUTOFHEAP [c]14Returned by the C++ function ::operator new when out of heap space.Size of failed request
reserved 15-31Reserved.Reserved
other > 31User-defined.User-defined

[a] These constants are defined in fenv.h.

[b] This signal is never generated by the library. It is available for you to raise manually, if required.

[c] Not used in RVCT 2.1, and later.

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().

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 in an IEEE standards compliant mode, and is disabled by the armclang command-line option -ffast-math.

For all the signals in Table 11, when a signal occurs, if the handler points to a function, the equivalent of signal(sig, 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.