ALARM — 일정 시간 후 루틴 실행

ALARM — 일정 시간 후 루틴 실행

몇 초 뒤에 어떤 일이 실행되도록 예약하고 싶을 때가 있어요. ALARM은 지정한 시간이 지나면 외부 서브루틴을 호출해주는 서브루틴이에요. 타이머처럼 동작한다고 생각하면 됩니다.

출처: gfortran 공식 문서 - ALARM

본문

시그니처(Synopsis)

CALL ALARM(SECONDS, HANDLER [, STATUS])

설명(Description)

ALARM(SECONDS, HANDLER [, STATUS])SECONDS만큼의 지연 후에 외부 서브루틴 HANDLER가 실행되도록 해요. 내부적으로는 alarm(2)으로 시그널을 설정하고 signal(2)로 잡는 방식을 사용합니다. STATUS가 주어지면, 이전에 예약된 알람이 전달되기까지 남은 초 수를 반환하고, 예약된 알람이 없었다면 0을 반환해요.

분류(Class)

서브루틴(Subroutine)

인자(Arguments)

  • SECONDS: 스칼라 INTEGER 유형이어야 해요. INTENT(IN)입니다.
  • HANDLER: 시그널 핸들러( INTEGER FUNCTION 또는 SUBROUTINE) 또는 더미/전역 INTEGER 스칼라예요. 스칼라 값으로는 SIG_IGN=1(발생한 알람 무시), SIG_DFL=0(기본 동작으로 설정)을 줄 수 있어요. INTENT(IN)입니다.
  • STATUS(선택): 기본 INTEGER 종류의 스칼라 변수여야 해요. INTENT(OUT)입니다.

예제

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

3초 뒤에 외부 루틴 handler_print를 호출하도록 예약하는 예시예요. 예약 후 남은 시간이 i에 담깁니다.

표준(Standard)

GNU 확장(GNU extension)