文档详情

linux信号处理机制.doc

发布:2018-08-09约8.02千字共7页下载文档
文本预览下载声明
linux信号处理机制 linux信号处理机制2010-07-09 11:461.linux信号机制之sigaction结构体浅析 信号安装函数sigaction(int signum,const struct sigaction*act,struct sigaction*oldact)的第二个参数是一个指向sigaction结构的指针(结构体名称与函数名一样,千万别弄混淆了)。在结构sigaction的实例中,指定了对特定信号的处理,信号所传递的信息,信号处理函数执行过程中应屏蔽掉哪些函数等。当然,此指针也可以为NULL,进程会以默认方式处理信号。以下就简单介绍一下sigaction结构以及一般的用法。 对于内核头文件而言,struct sigaction结构体定义在kernel/include/asm/signal.h,此头文件又被kernel/include/linux/signal.h包含。对于用户空间的头文件而言,struct sigaction定义在/usr/include/bits/sigaction.h,此头文件又被/usr/include/signal.h包含,所以应用程序中如果用到此结构,只要#include signal.h即可。注意内核中的定义和应用程序中的定义是不一样的,内核空间的sigaction结构只支持函数类型为__sighandler_t的信号处理函数,不能处理信号传递的额外信息。具体定义如下: …/*Type of asignal handler.*/typedef void(*__sighandler_t)(int); …#ifdef __KERNEL__ struct old_sigaction{__sighandler_t sa_handler;old_sigset_t sa_mask;unsigned long sa_flags;void(*sa_restorer)(void);}; struct sigaction{__sighandler_t sa_handler;unsigned long sa_flags;void(*sa_restorer)(void);sigset_t sa_mask;/*mask last for extensibility*/}; struct k_sigaction{struct sigaction sa;}; #else/*Here we must cater to libcs that poke about in kernel headers.*/ 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);}; #define sa_handler _u._sa_handler#define sa_sigaction _u._sa_sigaction #endif/*__KERNEL__*/ sa_handler此参数和signal()的参数handler相同,代表新的信号处理函数 sa_sigaction的原型是一个带三个参数,类型分别为int,struct siginfo*,void*,返回类型为void的函数指针。第一个参数为信号值;第二个参数是一个指向struct siginfo结构的指针,此结构中包含信号携带的数据值;第三个参数没有使用。 sa_mask指定在信号处理程序执行过程中,哪些信号应当被阻塞。默认当前信号本身被阻塞。用来设置在处理该信号时暂时将sa_mask指定的信号搁置。 sa_flags包含了许多标志位,比较重要的一个是SA_SIGINFO,当设定了该标志位时,表示信号附带的参数可以传递到信号处理函数中。即使sa_sigaction指定信号处理函数,如果不设置SA_SIGINFO,信号处理函数同样不能得到信号传递过来的数据,在信号处理函数中对这些信息的访问都将导致段错误。 用来设置信号处理的其他相关操作,下列的数值可用。 OR运算(|)组合A_NOCLDSTOP:如果参数signum为SIGCHLD,则当子进程暂停时并不会通知父进程SA_ONESHOT/SA_RESETHAND:当调用新的信号处理函数前,将此信号处理方式改为系统预设的方式。SA_RESTART:被信号中断的系统调用会自行重启 SA_NOMASK/SA_NODEFER:在处理此信号未结束前不理会此信号的再次到来。如果参数oldact不是NULL指针,则原来的信号处理方式会由此结构sig
显示全部
相似文档