linux系统编程 信号集操作函数

本文介绍了C语言中信号集的设定与管理,包括sigset_t类型、空集清零、全集填充、信号添加与删除、成员判断,以及sigprocmask和sigpending函数的作用与使用。通过位图概念理解信号操作,确保跨平台兼容性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1 /*
  2 信号集设定
  3 头文件  #include<signal.h>
  4 原型:
  5 sigset_t set;   //typedef unsigned long sigset_t;       定义信号集合
  6 int sigemptyset(sigset_t *set);         将某个信号集合清0       成功返回0,失败返回-1
  7 int sigfillset(sigset_t *set);          将某个信号集合清1       成功返回0,失败返回-1
  8 int sigaddset(sigset_t *set,int signum);将某个信号加入集合      成功返回0,失败返回-1
  9 int sigdelset(sigset_t *set,int signum);将某个信号移出集合      成功返回0,失败返回-1
 10 
 11 int sigismember(sigset_t *set,int signum);      判断某个信号是否在信号集中      
 12 返回值:在集合中,返回1         不再集合中返回0         出错返回-1
 13 
 14 sigset_t类型的本质是位图。但不应该直接使用位操作,而应使用上述函数,保证跨系统操作有效
 15 */
 16 
 17 /*
 18 sigprocmask()头文件 #include<signal.h>
 19 原型:
 20 int sigprocmask(int how,const sigset_t *set,sigset_t *oldset);
 21 返回值:成功返回0;失败返回-1,设置errno
 22 how:   1.SIG_BLOCK:    set表示需要屏蔽的信号
 23         2.SIG_UNBLOCK:  set表示需要解除屏蔽的信号
 24         3.SIG_SETMASK:  set表示用屏蔽信号由set覆盖
 25 set:   传入参数,是个位图
 26 oldset: 传出参数,保存旧的信号屏蔽集
 27 作用:读取或修改进程的信号屏蔽字(PCB中),设置set到相应的阻塞信号集中,以达到屏蔽或解除屏蔽信号
 28 注意:屏蔽信号只是将信号延后处理(直至解除屏蔽),并不是忽略信号(丢弃信号)
 29 */
 30 
 31 /*
 32 sigpending()头文件 #include<signal.h>
 33 原型:  
 34 int sigpending(sigset_t *set);
 35 返回值:成功返回0;失败返回-1,设置errno
 35 获取未决信号集
 36 */

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值