-
Notifications
You must be signed in to change notification settings - Fork 53
sigprocmask
果冻虾仁 edited this page Feb 8, 2015
·
1 revision
用于阻塞信号(除SIGKILL和SIGSTOP外) ##函数原型
#include <signal.h>
int sigprocmask(int how, const sigset_t *set, sigset_t *oldset);
##参数 ###how 指明如何改变信号屏蔽,它的值必须是下列之一:
how | 描述 |
---|---|
SIG_BLOCK | 阻塞set所指信号集中的信号(将它们加入当前信号屏蔽中) |
SIG_UNBLOCK | 放在set所指信号集中的信号(将它们从当前信号屏蔽中去除) |
SIG_SETMASK | 用set所指信号集作为进程的新信号屏蔽(抛弃原先信号屏蔽值) |
###set和oldset |
- set为NULL时,how没有意义
- oldset用于返回进程原先的信号屏蔽
- 若我们只想改变信号屏蔽而不查看它,则传递NULL给oldset
- 若我们只想查看当前信号屏蔽而不改变它,则传递NULL给set
##返回值 成功0,失败-1,并设置errno
Talk is cheap, show me the code!
C语言API包含部分
标准C的API、POSIX标准的系统编程API(一些Linux独有的系统API会单独注明)。
大部分头文件源码在/usr/include
目录下。
因为涉及到大量的POSIX编程。所以最好下载POSIX函数的man手册。
apt-get install manpages-posix
apt-get install manpages-posix-dev
默认安装了manpages-dev
,所以不装POSIX的man手册是可以查看绝大部分API的。
但是不装的话,有些API是不能看到的,比如posix_spawn
函数。
yum install man-pages.noarch
关于目录
左侧的目录并非以函数为索引依据,主要是以系统的man手册页面为索引依据。
比如exec里面包含6个函数、pipe里面包含pipe()和pipe2()两个函数,但是它们都是属于一个man页面中。