ALARM (The GNU Fortran Compiler)

### 8.14 `ALARM` — Execute a routine after a given delay ¶

Synopsis:

  `CALL ALARM(SECONDS, HANDLER [, STATUS])`

Description:

  `ALARM(SECONDS, HANDLER [, STATUS])` causes external subroutine HANDLER to be executed after a delay of SECONDS by using `alarm(2)` to set up a signal and `signal(2)` to catch it. If STATUS is supplied, it is returned with the number of seconds remaining until any previously scheduled alarm was due to be delivered, or zero if there was no previously scheduled alarm.

Class:

  Subroutine

Arguments:

  SECONDS | The type of the argument shall be a scalar `INTEGER`. It is `INTENT(IN)`.
  HANDLER | Signal handler (`INTEGER FUNCTION` or `SUBROUTINE`) or dummy/global `INTEGER` scalar. The scalar values may be either `SIG_IGN=1` to ignore the alarm generated or `SIG_DFL=0` to set the default action. It is `INTENT(IN)`.
  STATUS | (Optional) STATUS shall be a scalar variable of the default `INTEGER` kind. It is `INTENT(OUT)`.

Example:

      program test_alarm
        external handler_print
        integer i
        call alarm (3, handler_print, i)
        print *, i
        call sleep(10)
      end program test_alarm

  This causes the external routine handler_print to be called after 3 seconds.

Standard:

  GNU extension