该函数的调用方式如下所示:
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 定义 proc 值 SIGFPE_DEFAULT、SIGFPE_IGNORE 和 SIGFPE_ABORT。请参见1.4.26.1 floatingpoint.h:Fortran IEEE 定义。
在 64 位环境中,必须将 signal 和接收其输出的变量声明为 INTEGER*8,以免可能返回的地址被截断。
另请参见 kill(1)、signal(3) 和 kill(3F) 以及《数值计算指南》。