Sun Studio 12:Fortran 库参考

1.4.46 signal:按信号更改操作

该函数的调用方式如下所示:

INTEGER*4 signal INTEGER*8 signal

n = signal( signum, proc, flag )

signum

INTEGER*4

输入 

信号编号,请参见 signal(3)

proc

例程名称 

输入 

处理例程的用户信号名称;必须在外部语句中。 

flag

INTEGER*4

输入 

flag < 0:将 proc 用作信号处理程序

flag ≥ 0:忽略 proc;传递 flag 来指定操作:

flag = 0:使用缺省操作

flag = 1:忽略该信号

返回值 

INTEGER*4

输出 

n=-1:系统错误

n>0:上一个操作的定义

n>1:n 是本应调用的例程的地址

n<-1:如果 signum 是有效的信号编号:n 是本应调用的例程的地址。如果 signum 不是有效的信号编号:n 是错误编号。

 

INTEGER*8

 

在 64 位环境中,必须将 signal 和接收其输出的变量声明为 INTEGER*8

如果调用 proc,则将信号编号作为整数参数传递给它。

如果进程引发信号,缺省的操作通常是清理并中止。信号处理例程提供了捕捉特定异常或中断以便进行特殊处理的功能。

返回值可以用于后续 signal 调用中,以便恢复以前的操作定义。

即使没有错误,您也有可能会获得负返回值。事实上,如果将有效的信号编号传递给 signal(),获得的返回值小于 -1,这是正常的。

floatingpoint.h 定义 procSIGFPE_DEFAULTSIGFPE_IGNORESIGFPE_ABORT。请参见1.4.26.1 floatingpoint.h:Fortran IEEE 定义

在 64 位环境中,必须将 signal 和接收其输出的变量声明为 INTEGER*8,以免可能返回的地址被截断。

另请参见 kill(1)、signal(3) 和 kill(3F) 以及《数值计算指南》。