Linux系统编程32:进程信号之详解信号集操作函数(sigset_t ,sigpending,sigprocmask)

本文详细介绍了Linux系统编程中的信号集操作,包括`sigset_t`类型、信号集操作函数如`sigemptyset`、`sigfillset`、`sigaddset`、`sigdelset`和`sigpending`等。通过示例展示了如何查看和修改进程的阻塞信号集,以控制信号的处理方式。同时讨论了为什么不能直接控制未决信号集以及如何使用`sigprocmask`函数改变信号屏蔽字。
摘要由CSDN通过智能技术生成

(1)sigset_t

前面说过,未决和阻塞分别用位图来表示,于是我们把保存位图这样的数据类型称为sigset_tsigset_t称为信号集,于是他们分别称为阻塞信号集和未决信号集

sigset_t这种类型可以表示每个信号的有效和无效的状态(阻塞信号集的有效和无效的含义是该信号是否被阻塞,未决信号集则是该信号是否处于未决状态),其中阻塞信号集也叫做当前进程的信号屏蔽字(SignaL Mask

(2)信号集操作函数

sigset既然是一个保存位图的数据类型,那么是否直接修改它对应数据的比特位就能达到屏蔽信号,产生信号的目的呢?答案是可以的,但是由于这个类型内部如何存储这些位图要依赖于系统实现,简单来说不同平台的存储方式是不一样的,所以我们不能直接操作比特位,我们只能调用一下函数来操作sigset_t变量

注意以下函数仅在操作变量,它并没有深入到内核中改变对应的位图,就像ftok函数生成key的作用一样

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

快乐江湖

创作不易,感谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值