Spec-Zone.ru › GNU Fortran 14

8.248 SIGNAL — Обработка сигналов подпрограмма (или функция)

Описание:

SIGNAL(NUMBER, HANDLER [, STATUS]) вызывает внешнюю подпрограмму HANDLER с одним целочисленным аргументом, переданным по значению, когда возникает сигнал NUMBER. Если HANDLER является целым числом, он может быть использован для отключения обработки сигнала NUMBER или возврата к его стандартному действию. См. signal(2).

Если SIGNAL вызывается как подпрограмма и аргумент STATUS указан, он устанавливается в значение, возвращённое signal(2).

Стандарт:

Расширение GNU

Класс:

Подпрограмма, функция

Синтаксис:
CALL SIGNAL(NUMBER, HANDLER [, STATUS])
STATUS = SIGNAL(NUMBER, HANDLER)
Аргументы:
NUMBER Должен быть скалярным целым числом, с INTENT(IN)
HANDLER Обработчик сигнала (INTEGER FUNCTION или SUBROUTINE) или псевдо-глобальный скаляр INTEGER. INTEGER. Он INTENT(IN).
STATUS (Необязательно) STATUS должен быть скалярным целым числом. Он имеет INTENT(OUT).
Возвращаемое значение:

Функция SIGNAL возвращает значение, возвращённое 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

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-14.2.0/gfortran/SIGNAL.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API