SIGNAL
— Signal handling subroutine (or function) ¶SIGNAL(NUMBER, HANDLER [, STATUS])
causes external subroutine
HANDLER to be executed with a single integer argument passed by
value when signal NUMBER occurs. If HANDLER is an integer,
it can be used to turn off handling of signal NUMBER or revert to
its default action. See signal(2)
.
If SIGNAL
is called as a subroutine and the STATUS argument
is supplied, it is set to the value returned by signal(2)
.
GNU extension
Subroutine, function
CALL SIGNAL(NUMBER, HANDLER [, STATUS]) |
STATUS = SIGNAL(NUMBER, HANDLER) |
NUMBER | Shall be a scalar integer, with INTENT(IN) |
HANDLER | Signal handler (INTEGER FUNCTION or
SUBROUTINE ) or dummy/global INTEGER scalar.
INTEGER . It is INTENT(IN) . |
STATUS | (Optional) STATUS shall be a scalar
integer. It has INTENT(OUT) . |
The SIGNAL
function returns the value returned by signal(2)
.
module m_handler contains ! POSIX.1-2017: void (*func)(int) subroutine handler_print(signum) bind(C) use iso_c_binding, only: c_int integer(c_int), value :: signum print *, 'handler_print invoked with signum =', signum end subroutine end module program test_signal use m_handler intrinsic :: signal, sleep call signal (12, handler_print) ! 12 = SIGUSR2 (on some systems) call signal (10, 1) ! 10 = SIGUSR1 and 1 = SIG_IGN (on some systems) call sleep (30) end program test_signal