Oracle Solaris Studio 12.4 Man Pages

Exit Print View

Updated: January 2015
 
 

signal(3F)

Name

signal - 更改针对信号的操作

Synopsis

integer*4 function signal(signum, proc, flag)
integer*4 signum, flag
external proc
对于 64 位环境:
integer*8 function signal(signum, proc, flag)
integer*8 flag
integer*4 signum
external proc
针对 64 位环境进行编译时(使用编译器选项 
-m64),proc 和 flag 必须声明为 integer*8,
从 signal 接收结果的任何变量也是如此。

Description

如果某个进程引发了一个信号(请参见 signal(3C)),则缺省操作通常为清理和中止。可以选择写入替代信号处理例程。调用 signal 是向系统指定此替代操作的方式。

输入:

signum 是信号编号(请参见 signal.h(3HEAD))。proc 是用户信号处理例程的名称。如果 flag 是负值,则 proc 必须是用户信号处理例程的名称。如果 flag 是零或正值,则忽略 proc,并将 flag 的值作为信号操作定义传递到系统。需要特别指出的是,这是恢复以前保存的信号操作的方式。flag 的两个可能值具有特定的含义:

 
0 means "use the default action."  See NOTES below.
1 means "ignore this signal."

输出:

返回的正值是以前的操作定义。大于 1 的值是发生指定信号时要调用的例程的地址。返回的负值是对系统错误代码取反的结果。请参见 perror (3F) 。可在后续对 signal 的调用中使用该返回值来恢复以前的操作定义。

Files

libfui.alibfui.so

See also

kill (1) 、 kill (3F) 、 perror (3F) 、 signal (3C)

Notes

如果在 64 位环境中需要负的 flag 值,可在对 signal 的调用中使用 INTEGER*8 文字值 -1_8

如果调用了用户信号处理程序,则以整数参数形式传递信号编号。

如果在设置了高位的地址上装入了以 flag 形式传递到此函数的函数代码,则此函数可能会失败。在需要正值行为的情况下,会将此解释为 flag 的负值。在 64 位环境中或者在使用静态链接的代码时,不太可能发生这种情况。

在 Linux 系统上,signal() 手册页在手册页第 2 部分,信号编号在第 7 部分。