时间:2017-08-17来源:系统城装机大师作者:zhijie
2、信号阻塞、信号的未决
sigset_t 是一种将信号类型以为位掩码形式存在的数据类型(下文都称之为信号集),他是多种信号的集合(可以保证容纳所有的信号)。操作系统的PCB为每个进程都维护了一个这样的数据类型,并将其内所有的信号阻塞,使他们不可以实时到达进程。当信号屏蔽解除时他们才被传递到进程。在这之间的状态通常被称为未决(pending)。而在信号阻塞期间多次到来的信号,在信号屏蔽解除时只会被报告一次。
对sigset_t 处理有一系列函数,其中POSIX标准有5个
int sigemptyset(sigset_t *set);
int sigfillset(sigset_t *set);
int sigaddset(sigset_t *set, int signum);
int sigdelset(sigset_t *set, int signum);
int sigismember(const sigset_t *set, int signum);
这样的函数基本上看参数就能知道怎么用,不在赘述。
glibc中还实现了3个扩展的函数:
int sigisemptyset(sigset_t *set);
int sigorset(sigset_t *dest, sigset_t *left, sigset_t *right);
int sigandset(sigset_t *dest, sigset_t *left, sigset_t *right);
sigprocmask()函数可以检测和更改信号屏蔽集。
每个进程都有一个用来描述哪些信号递送到进程时将被阻塞的信号集,该信号集中的所有信号在递送到进程后都将被阻塞。
int sigprocmask(int how, const sigset_t *set, sigset_t *oldset);
how
说明
SIG_BLOCK
将set中的信号与原有的取并集,并更新进程的屏蔽字
SIG_UNBLOCK
解除原有的信号集中包含set中的信号,(set补集的交集)
SIG_SETMASK
将进程的屏蔽字设置为set
sigpending函数可以看到信号屏蔽期间那些信号来到过(不计次数的)。
以上就是Linux的信号机制的解析了,当然Linux信号机制是一个相对复杂的系统,本文能够给大家的是一个初步的了解。
2024-07-18
Centos 7 二进制安装配置 MariaDB数据库2024-07-18
Centos7默认firewalld防火墙使用命令大全2024-07-07
四种执行python系统命令的方法常用权限linux系统内有档案有三种身份 u:拥有者 g:群组 o:其他人这些身份对于文档常用的有下面权限:r:读权限,用户可以读取文档的内容,如用cat,more查看w:写权限,用户可以编辑文档x...
2024-07-07
然而,如果我们遵循通常的 WordPress 最佳实践,这些安全问题可以避免。在本篇中,我们会向你展示如何使用 WPSeku,一个 Linux 中的 WordPress 漏洞扫描器,它可以被用来找出你安装...
2024-07-03