10_12 sigddset sigdelset 和 sigismember 的实现
2015-12-09 13:35
417 查看
一、源代码:
cat -n 10_12.c
1 #include <signal.h>
2 #include <errno.h>
3
4 #define SIGBAD(signo) ((signo) <= 0 || (signo) > NSIG)
5
6 int sigaddset(sigset_t *set,int signo)
7 {
8 if (SIGBAD(signo)){
9 errno = EINVAL;
10 return -1;
11 }
12
13 *set |= (1 << (signo - 1));
14 return 0;
15 }
16
17
18 int sigdelset(sigset_t *set,int signo)
19 {
20 if (BADSIG(signo)){
21 errno = EINVAL;
22 return -1;
23 }
24
25 *set &= ~(1 << (signo -1));
26 return 0;
27 }
28
29
30 int sigismember(sigset_t *set,int signo)
31 {
32 if (SIGBAD(signo)){
33 errno = EINVAL;
34 return -1;
35 }
36
37 return (*set & (1 << (signo - 1)) != 0);
38 }
cat -n 10_12.c
1 #include <signal.h>
2 #include <errno.h>
3
4 #define SIGBAD(signo) ((signo) <= 0 || (signo) > NSIG)
5
6 int sigaddset(sigset_t *set,int signo)
7 {
8 if (SIGBAD(signo)){
9 errno = EINVAL;
10 return -1;
11 }
12
13 *set |= (1 << (signo - 1));
14 return 0;
15 }
16
17
18 int sigdelset(sigset_t *set,int signo)
19 {
20 if (BADSIG(signo)){
21 errno = EINVAL;
22 return -1;
23 }
24
25 *set &= ~(1 << (signo -1));
26 return 0;
27 }
28
29
30 int sigismember(sigset_t *set,int signo)
31 {
32 if (SIGBAD(signo)){
33 errno = EINVAL;
34 return -1;
35 }
36
37 return (*set & (1 << (signo - 1)) != 0);
38 }
相关文章推荐
- 阿里巴巴的分布式应用框架-dubbo负载均衡策略--- 一致哈希算法
- android学习笔记-模仿音乐音频频率
- Intellij Idea 14 生成serialVersionUID的方法
- Web开发中需要了解的东西
- html多媒体标签
- 执行作业报错SQL Server 执行包实用工具要求 Integration Services
- CURL重试发送请求
- 这一段时间学习JAVA的回顾总结1
- Assembly x64 Intro - Arith Operate
- MTK SystemUI/系统深度定制修改与编辑------细数那些你所不知道的事件分发处理机制 dispatchTouchEvent
- 阿里巴巴的分布式应用框架-dubbo负载均衡策略--- 一致哈希算法
- 在这里开始写博客啦!
- Nim语言太复杂了
- linux shell 历史命令记录功能
- jQuery之事件冒泡&模拟操作
- [转]关于产品的落地
- Nfs的简单了解
- LSMW RMDATIND 税分类 TAXKM导入问题
- Shell脚本查看apk签名信息
- iOS开发-工具:Xcode7升级之后插件无法使用与不小心点击Skipbundle的解决办法