Next: Sin Intrinsic, Previous: Sign Intrinsic, Up: Table of Intrinsic Functions
CALL Signal(Number, Handler, Status)
Number: INTEGER
; scalar; INTENT(IN).
Handler: Signal handler (INTEGER FUNCTION
or SUBROUTINE
)
or dummy/global INTEGER(KIND=1)
scalar.
Status: INTEGER(KIND=7)
; OPTIONAL; scalar; INTENT(OUT).
Intrinsic groups: unix
.
Description:
If Handler is a an EXTERNAL
routine, arranges for it to be
invoked with a single integer argument (of system-dependent length)
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)
.
Note that Handler will be called using C conventions,
so the value of its argument in Fortran terms
Fortran terms is obtained by applying %LOC()
(or LOC()
) to it.
The value returned by signal(2)
is written to Status, if
that argument is supplied.
Otherwise the return value is ignored.
Some non-GNU implementations of Fortran provide this intrinsic as only a function, not as a subroutine, or do not support the (optional) Status argument.
Warning: Use of the libf2c
run-time library function
`signal_' directly
(such as via `EXTERNAL SIGNAL')
requires use of the %VAL()
construct
to pass an INTEGER
value
(such as `SIG_IGN' or `SIG_DFL')
for the Handler argument.
However, while `CALL SIGNAL(signum, %VAL(SIG_IGN))'
works when `SIGNAL' is treated as an external procedure
(and resolves, at link time, to libf2c
's `signal_' routine),
this construct is not valid when `SIGNAL' is recognized
as the intrinsic of that name.
Therefore, for maximum portability and reliability, code such references to the `SIGNAL' facility as follows:
INTRINSIC SIGNAL ... CALL SIGNAL(signum, SIG_IGN)
g77
will compile such a call correctly,
while other compilers will generally either do so as well
or reject the `INTRINSIC SIGNAL' statement via a diagnostic,
allowing you to take appropriate action.
For information on other intrinsics with the same name: See Signal Intrinsic (function).