Skip to content

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

Linux环境编程API

C语言API包含部分标准C的API、POSIX标准的系统编程API(一些Linux独有的系统API会单独注明)。

头文件源码

大部分头文件源码在/usr/include目录下。

安装man手册

因为涉及到大量的POSIX编程。所以最好下载POSIX函数的man手册。

Ubuntu

apt-get install manpages-posix        
apt-get install manpages-posix-dev

默认安装了manpages-dev,所以不装POSIX的man手册是可以查看绝大部分API的。
但是不装的话,有些API是不能看到的,比如posix_spawn函数。

CentOS

yum install man-pages.noarch

关于目录

左侧的目录并非以函数为索引依据,主要是以系统的man手册页面为索引依据。
比如exec里面包含6个函数、pipe里面包含pipe()和pipe2()两个函数,但是它们都是属于一个man页面中。

Clone this wiki locally