sigaction():信号处理函数 可以携带信息~
头文件 #include <signal.h>
int sigaction(int signum,const struct sigaction *act, struct sigaction *oldact));
一个参数为信号的值,可以为除SIGKILL及SIGSTOP外的任何一个特定有效的信号(为这两个信号定义自己的处理函数,将导致信号安装错误)。
第二个参数是指向结构sigaction的一个实例的指针,在结构sigaction的实例中,指定了对特定信号的处理,可以为空,进程会以缺省方式对信号处理;
第三个参数oldact指向的对象用来保存原来对相应信号的处理,可指定oldact为NULL。
如果把第二、第三个参数都设为NULL,那么该函数可用于检查信号的有效性。
struct sigaction
{
union
{
__sighandler_t _sa_handler;
void (*_sa_sigaction)(int, struct siginfo *, void *);
} _u
sigset_t sa_mask;
unsigned long sa_flags;
void (*sa_restorer)(void);
}
1、联合数据结构中union的两个元素_sa_handler以及*_sa_sigaction指定信号关联函

sigaction()函数用于设置信号处理方式,可以携带信息。它接收信号值、处理函数和旧处理函数参数。sa_sigaction指定的处理函数带三个参数,包括信号值、siginfo_t结构指针(含信号数据)和未使用参数。信号处理函数可以像中断一样被调用,接收信号值并在处理函数中操作。对比signal()函数,sigaction()能传递更多信息。实时和非实时信号在排队和可靠性上有所区别。信号集则用于描述信号集合,常与信号阻塞配合使用。

219

被折叠的 条评论
为什么被折叠?



