最近更新:

1,父进程fork一个子进程,当向父进程发送一个SIGINT或其它信号时,子进程是否会接受到该信号?

2,父进程调用system执行一个程序时,向父进程发送一个信号时,system运行中的程序是否能够接受到该信号?

3,当父进程正常执行完毕后,会通知子进程吗?

是我自己的笔记,乱七八糟的。

语法:如果参数为const型,仅表示该参数在此函数的实现中不能被修改,不代表传入的参数类型一定是const型

int sigsuspend(const sigset_t *sigmask);

代码片段:

sigset_t zeromask;
sigemptyset(&zeromask);
sigsuspend(&zeromask);

signal继承问题:子进程会继承父进程的signal mask 测试地址:http://blog.chinaunix.net/uid-29100821-id-4018170.html

理论说明:http://blog.csdn.net/lihuibo128/article/details/8556669

unix的读写函数:open,write,read

说明:http://www.cnblogs.com/Pierre-de-Ronsard/archive/2012/07/09/2582417.html

实验1:信号屏蔽字

1,构造一个进程:进程设置对某个信号的处理函数,模拟该信号处理,检验是否如预期

2,构造一个进程:进程设置对某个信号的处理函数,用sigprocmask设置,该进程对这一信号屏蔽,模拟该信号,检查是否如预期,使用其它信号,检查是否如预期

就能够知道sigprocmask函数的功能。

sigpromask:用来设置进程的信号屏蔽,哪些信号不被进程所响应,及时设置了signal的信号handler

实验1扩展知识

与信号集合相关的一组操作是:

头文件
#include <signal.h>
sigemptyset(sigset_t *set)初始化由set指定的信号集,信号集里面的所有信号被清空;
sigfillset(sigset_t *set)调用该函数后,set指向的信号集中将包含linux支持的64种信号;
sigaddset(sigset_t *set, int signum)在set指向的信号集中加入signum信号;
sigdelset(sigset_t *set, int signum)在set指向的信号集中删除signum信号;
sigismember(const sigset_t *set, int signum)判定信号signum是否在set指向的信号集中。
int sigaction( int sig, const struct sigaction *act,struct sigaction *oact )检查、修改和指定信号相关联的信号响应。
实验1扩展知识
int sigprocmask(int how, const sigset_t *restrict set, sigset_t *restrict oldset);
参数how
如果为SIG_BLOCK,该函数会将第二个参数的信号屏蔽集合附加到之前的信号屏蔽集合中
如果为SIG_UNBLOCK,该函数会设置新的信号屏蔽集合为(原先的mask和第二个参数set的补集)的交集。
如果为SIG_SETMASK,该函数会清除原先的信号屏蔽集合,设置第二个参数的信号屏蔽集合为新的信号屏蔽集合
 
实验2:测试先屏蔽某个信号,再允许响应 该信号(只产生一次该信号)
int main()
{
sigset_t sigset, oldmask; signal(SIGUSR1, proc_usr1); sigprocmask(, NULL, &oldmask); sigaddset(&sigset, SIGUSR1);
sigprocmask(SIG_BLOCK, &sigset, NULL); pr_mask("Block SIGUSR1"); sleep();
sigprocmask(SIG_SETMASK, &oldmask, NULL);//设置新的屏蔽字为oldmask
//sigprocmask(SIG_UNBLOCK, &sigset, NULL);//清除设置的屏蔽字
pr_mask("Unblock SIGUSR1"); sleep(); return ;
}

运行,产生一次SIGUSR1信号

输出:

Block SIGUSR1:SIGUSR1 

proc_usr1
Unblock SIGUSR1:
sigpending(sigset_t *set):取得当前进程的信号屏蔽字
个人理解,该函数和sigprocmask(0, NULL, sigset_t *set)功能一样
 
sigsuspend();
 
sigaction()

我的C笔记的更多相关文章

  1. git-简单流程(学习笔记)

    这是阅读廖雪峰的官方网站的笔记,用于自己以后回看 1.进入项目文件夹 初始化一个Git仓库,使用git init命令. 添加文件到Git仓库,分两步: 第一步,使用命令git add <file ...

  2. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  3. SQL Server技术内幕笔记合集

    SQL Server技术内幕笔记合集 发这一篇文章主要是方便大家找到我的笔记入口,方便大家o(∩_∩)o Microsoft SQL Server 6.5 技术内幕 笔记http://www.cnbl ...

  4. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  5. PHP-会员登录与注册例子解析-学习笔记

    1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...

  6. NET Core-学习笔记(三)

    这里将要和大家分享的是学习总结第三篇:首先感慨一下这周跟随netcore官网学习是遇到的一些问题: a.官网的英文版教程使用的部分nuget包和我当时安装的最新包版本不一致,所以没法按照教材上给出的列 ...

  7. springMVC学习笔记--知识点总结1

    以下是学习springmvc框架时的笔记整理: 结果跳转方式 1.设置ModelAndView,根据view的名称,和视图渲染器跳转到指定的页面. 比如jsp的视图渲染器是如下配置的: <!-- ...

  8. 读书笔记汇总 - SQL必知必会(第4版)

    本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...

  9. 2014年暑假c#学习笔记目录

    2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...

  10. JAVA GUI编程学习笔记目录

    2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...

随机推荐

  1. datatables.js 里面遇到的问题

    1. 假如需要A行的data 和 B行的data 合并 在B行 data:name 在A行的 render:function(){ return data+full.name   此时返回的就是A+B ...

  2. document.compatMode属性介绍

    之前不了解这个属性,今天总结一下,以后可能会用到. 对于document.compatMode,很多朋友可能都根我一样很少接触,知道他的存在却不清楚他的用途.今天在ext中看到 document.co ...

  3. javascript history对象

    window.history.[属性|方法] 0.history对象记录了用户曾经浏览过的页面(URL),并可以实现浏览器前进与后退相似导航的功能. 1.属性 2.方法

  4. 项目管理-SVN服务器的搭建

    Subversion是优秀的版本控制工具,其具体的的优点和详细介绍,这里就不再多说. 首先来下载和搭建SVN服务器. 现在Subversion已经迁移到apache网站上了,下载地址: http:// ...

  5. zTree模糊查询人员姓名:getNodesByParamFuzzy

    以前使用zTree,不知道有getNodesByParamFuzzy这个模糊查询的方法,所以用了比较笨的方法,比如:功能要求(模糊查询人员姓名),先获得用户输入的名称,然后到数据库或者缓存中去查找,然 ...

  6. 博客word测试

    博客word测试 博客word测试 from __future__ import division, print_functionDOCLINES = (__doc__ or '').split(&q ...

  7. Major and minor numbers

    The major nuber is the driver associated with the device, while the minor number is used by the kern ...

  8. openstack私有云布署实践【5 数据库MariaDB 集群】

    kxcontroller1   kxcontroller2  controller1 这3台作角色 确保服务器的域名解析访问正常   确保NTP时间同步   配置HAproxy主备访问,其中的一项数据 ...

  9. Tomcat 配置支持APR

    对ARP支持,需要安装以下库: APR library JNI wrappers for APR used by Tomcat (libtcnative) OpenSSL libraries 其中JN ...

  10. (转)Java程序员应该了解的10个面向对象设计原则

    面向对象设计原则是OOPS(Object-Oriented Programming System,面向对象的程序设计系统)编程的核心,但大多数Java程序员追逐像Singleton.Decorator ...