您的位置:首页 > 运维架构 > Linux

Linux学习笔记(06-15)信号集的使用

2015-06-15 14:36 357 查看
信号集(signal set)

POSIX.1定义数据类型sigset_t以包含一个信号集,并且定义了下列5个处理信号集的函数。

#include <signal.h>

int sigemptyset(sigset_t * set);

int sigfillset(sigset_t * set);

int sigaddset(sigset_t * set, int signo);

int sigdelset(sigset_t * set, int signo);

int sigismember(const sigset_t * set, int signo);

sigemptyset函数将整型设置为0.

sigfillset函数将整型中各位设置为1.

int sigprocmask(int how, const sigset_t * restrict set, sigset_t * restrict oset);

参数how只是如何修改当前信号屏蔽字。SIG_BLOCK、SIG_UNBLOCK、SIG_SETMASK

SIG_SETMASK将信号屏蔽字恢复为先前的值。

函数sigpending返回一信号集。

int sigpending(sigset_t * set);

函数sigaction检查或修改与制定信号相关联的处理动作。

int sigaction(int signo, const struct sigaction * restrict act, struct sigaction *restrict oact);

函数sigsetjmp和siglongjmp

当捕捉到一个信号时,进入信号捕捉函数,此时当前信号被自动地加到进程的信号屏蔽字中,这阻止了后来产生的这种信号中断该信号处理程序。

int sigsetjmp(sigjmp_buf env, int savemask);

void siglongjmp(sigjmp_buf env, int val);

如果savemask非0,则sigsetjmp在env中保存进程的当前信号屏蔽字。调用siglongjmp时,如果带非0 savemask的sigsetjmp调用已经保存了env,则siglongjmp从其中恢复保存的信号屏蔽字。

函数sigsuspend

(如果在解除阻塞和pause之间发生了信号)在一个原子操作中先恢复信号屏蔽字,然后使进程休眠。

int sigsuspend(const sigset_t * sigmask);

在捕捉到一个信号或发生了一个会终止该进程的信号之前,该进程被挂起。

如果它返回到调用者,则总是返回-1.

abort函数的功能是使程序异常终止。

POSIX.1要求system忽略SIGINT和SIGQUIT,阻塞SIGCHLD。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: