发布日期:2016-01-04 10:00 来源: 标签: 编程语言 C教程 C语言信号处理 C语言信号处理函数
本章我们主要学习C语言信号处理函数:sigismember、signal、sigpending和sigprocmask,下面我们就做一下具体讲解,希望大家多多支持中国站长网络学院。
sigismember(测试某个信号是否已加入至信号集里) 
相关函数 sigemptyset,sigfillset,sigaddset,sigdelset 
表头文件 #include<signal.h> 
定义函数 int sigismember(const sigset_t *set,int signum); 
函数说明 
sigismember()用来测试参数signum 代表的信号是否已加入至参数set信号集里。如果信号集里已有该信号则返回1,否则返回0。 
返回值 
信号集已有该信号则返回1,没有则返回0。如果有错误则返回-1。 
错误代码 
EFAULT 参数set指针地址无法存取 
EINVAL 参数signum 非合法的信号编号
signal(设置信号处理方式)
相关函数 sigaction,kill,raise 
表头文件 #include<signal.h> 
定义函数 void (*signal(int signum,void(* handler)(int)))(int); 
函数说明 
signal()会依参数signum 指定的信号编号来
设置该信号的处理函数。当指定的信号到达时就会跳转到参数handler指定的函数执行。如果参数handler不是函数指针,则必须是下列两个常数之一: 
SIG_IGN 忽略参数signum指定的信号。 
SIG_DFL 将参数signum 指定的信号重设为核心预设的信号处理方式。 
返回值 
返回先前的信号处理函数指针,如果有错误则返回SIG_ERR(-1)。 
附加说明 
在信号发生跳转到自定的handler处理函数执行后,系统会自动将此处理函数换回原来系统预设的处理方式,如果要改变此操作请改用sigaction()。
sigpending(查询被搁置的信号) 
相关函数 signal,sigaction,sigprocmask,sigsuspend 
表头文件 #include<signal.h> 
定义函数 int sigpending(sigset_t *set); 
函数说明 
sigpending()会将被搁置的信号集合由参数set指针返回。 
返回值
执行成功则返回0,如果有错误则返回-1。 
错误代码 
EFAULT 参数set指针地址无法存取 
EINTR 此调用被中断
sigprocmask(查询或设置信号遮罩) 
相关函数 signal,sigaction,sigpending,sigsuspend 
表头文件 #include<signal.h> 
定义函数 int sigprocmask(int how,const sigset_t *set,sigset_t * oldset); 
函数说明 
sigprocmask()可以用来改变目前的信号遮罩,其操作依参数how来决定 
SIG_BLOCK 新的信号遮罩由目前的信号遮罩和参数set 指定的信号遮罩作联集 
SIG_UNBLOCK 将目前的信号遮罩删除掉参数set指定的信号遮罩 
SIG_SETMASK 将目前的信号遮罩设成参数set指定的信号遮罩。 
如果参数oldset不是NULL指针,那么目前的信号遮罩会由此指针返回。 
返回值 
执行成功则返回0,如果有错误则返回-1。 
错误代码 EFAULT 参数set,oldset指针地址无法存取。 
EINTR 此调用被中断

相关评论

专题信息
    C语言是一种计算机程序设计语言。它既有高级语言的特点,又具有汇编语言的特点。它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。C语言对操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它解释型高级语言,有一些大型应用软件也是用C语言编写的。 C语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画。它是数值计算的高级语言。C语言是一种结构化语言。它层次清晰,便于按模块化方式组织程序,易于调试和维护。