系统城装机大师 - 固镇县祥瑞电脑科技销售部宣传站!

当前位置:首页 > 系统教程 > Linux教程 > 详细页面

Linux信号机制解析(2)

时间: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信号机制是一个相对复杂的系统,本文能够给大家的是一个初步的了解。

12 下一页
分享到:

相关信息

  • linux定时关机设置教程

    当linux在运作时不能直接关闭电源容易将档案系统损毁,因此需要用shutdown以安全的方式关闭,那么这个操作该怎么实现呢?下面就为大家带来了详细教程。...

    2022-11-07

  • linux强制删除文件教程

    由于linux系统和我们常用的windows系统是不一样的,所以如果是初学者,可能会不知道linux怎么强制删除文件,其实我们只要打开终端,使用命令就可以删除了。...

    2022-11-03

系统教程栏目

栏目热门教程

人气教程排行

站长推荐

热门系统下载