signal函数-鸿鹄论坛_华为认证h35-211-hcnp-access network题库

darken_47362 7 0 pdf 2024-07-15 20:07:29

10.3 signal函数

UNIX信号机制最简单的界面是signal函数。


#include 

void (*signal (int signo, void (*func)(int))) (int);

返回:成功则为以前的信号处理配置,若出错则为SIG_ERR。

signal函数由ANSI C定义。因为ANSI C不涉及多进程、进程组、终端I/O等,所以它对信号的定义非常含糊,以致于对UNIX系统而言几乎毫无用处。确实,ANSI C对信号的说明只用了2页,而POSIX.1的说明则用了15页。SVR4也提供signal函数,该函数可提供老的SVR2不可靠信号语义。提供此函数主要是为了向下兼容要求此老语义的应用程序,新应用程序不应使用它。4.3+BSD也提供signal函数,但是它是用sigaction函数实现的,所以在4.3+BSD之下使用它提供新的可靠的信号语义。在讨论sigaction函数时,提供了使用该函数的signal的一个实现。本书中的所有实例均使用程序10-12中给出的signal函数。

signo参数是表10-1中的信号名。func的值是:

(a)常数SIG_IGN,或

(b)常数SIG_DFL,或

(c)当接到此信号后要调用的函数的地址。

如果指定SIG_IGN,则向内核表示忽略此信号。(记住有两个信号SIGKILL和SIGSTOP不能忽略。)如果指定SIG_DFL,则表示接到此信号后的动作是系统默认动作(见表10-1中的最后1列)。当指定函数地址时,我们称此为捕捉此信号。我们称此函数为信号处理程序(signal handler)或信号捕捉函数(signal-catching function)。

您可以参考更多关于signal函数的使用细节,通过以下链接获取更详细的信息:

您可以深入了解信号处理在不同操作系统和编程环境中的具体实现和应用。

用户评论
请输入评论内容
评分:
暂无评论