该函数的调用方式如下所示:
INTEGER*4 alarm n = alarm ( time, sbrtn ) |
|||
time |
INTEGER*4 |
输入 |
等待的秒数(0=不调用) |
sbrtn |
例程名称 |
输入 |
要执行的子程序必须列在外部语句中 |
返回值 |
INTEGER*4 |
输出 |
最后一次报警的剩余时间 |
示例:alarm-等待 9 秒后调用 sbrtn:
integer*4 alarm, time / 1 / common / alarmcom / i external sbrtn i = 9 write(*,*) i nseconds = alarm ( time, sbrtn ) do n = 1,100000 ! Wait until alarm activates sbrtn. r = n ! (any calculations that take enough time) x=sqrt(r) end do write(*,*) i end subroutine sbrtn common / alarmcom / i i = 3 ! Do no I/O in this routine. return end |
另请参见:alarm(3C)、sleep(3F) 和 signal(3F)。注意以下限制条件:
子例程无法将自己的名称传递给 alarm。
alarm 例程生成的信号可能会妨碍 I/O 操作。因此被调用的子例程 sbrtn 本身不得执行任何 I/O 操作。
从并行或多线程 Fortran 程序中调用 alarm() 可能会产生不可预料的结果。