实验:sigsuspend(),sigprocmask()

实验:sigsuspend(),sigprocmask()

源代码:
  1. /*
  2. * Program: pause_suspend.c
  3. * To test the difference between sigsuspend() and paus().
  4. * Author: zsl
  5. * Date: 2014-10-17
  6. * First release.
  7. * 参见网页:http://blog.csdn.net/liwentao1091/article/details/6619089
  8. *
  9. * */
  10. #include <stdio.h>
  11. #include <stdlib.h>
  12. #include <signal.h>
  13. #include <unistd.h>
  14. #include <string.h>
  15. /*
  16. * Handler for SIGINT (Ctrl-C), SIGQUIT (Ctrl-\)
  17. * */
  18. void sig_func(int signo)
  19. {
  20. if ( SIGINT == signo ) // just print a line.
  21. {
  22. printf(" SIGINT is processing...\n ");
  23. }
  24. if ( SIGQUIT == signo ) // print a line and exit.
  25. {
  26. printf(" SIGQUIT is processing ...\n ");
  27. printf(" Now exiting ...\n ");
  28. exit(EXIT_SUCCESS);
  29. }
  30. }
  31. int main(void)
  32. {
  33. int i;
  34. sigset_t maskset, set_quit;
  35. sigemptyset(&maskset);
  36. sigemptyset(&set_quit); // initialize two sets.
  37. sigaddset(&maskset, SIGINT); // mask SIGINT
  38. sigaddset(&set_quit, SIGQUIT); // suspend SIGQUIT
  39. // signal the two signals: SIGINT, SIGQUIT
  40. signal(SIGINT, sig_func);
  41. signal(SIGQUIT, sig_func);
  42. while(1)
  43. {
  44. /* First to mask the signal of the process: SIGINT */
  45. sigprocmask(SIG_BLOCK, &maskset, NULL);
  46. for(i = 0; i < 10; i ++)
  47. {
  48. write(1, "* ", strlen("* "));
  49. sleep(1);
  50. }
  51. printf("\n");
  52. #if 1
  53. /*
  54. * while sigsuspend(), SIGQUIT is blocked.
  55. * but SIGINT is unblocked.
  56. * If you want to execute the two signals, you
  57. * should Ctrl-\, then Ctrl-C.
  58. * */
  59. printf("Before sigsuspend() ... \n");
  60. sigsuspend(&set_quit);
  61. #else
  62. sigprocmask(SIG_UNBLOCK, &maskset, NULL);
  63. pause();
  64. #endif
  65. }
  66. return 0;
  67. }
程序的运行:
在打印“*  ”的时候,SIGINT (Ctrl-C)被 阻塞了。而SIGQUIT没有被阻塞,只要Ctrl-\就会终止程序。
在sigsuspend() 的时候,SIGQUIT (Ctrl-\)被阻塞了,而SIGINT 没有被阻塞,只要 Ctrl-C 就会进入 signal handler 中执行。。
如果想在 sigsuspend() 中对两个信号都进行处理,那么在 sigsuspend() 的时候先 SIGQUIT, 然后 SIGINT。
如下是执行效果图:
171621185449929.png


来自为知笔记(Wiz)


转载于:https://www.cnblogs.com/LinTeX9527/p/4031428.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/376579.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

后台系统可扩展性学习笔记(七)Service Discovery与微服务

文章目录应用层微服务架构服务注册查询 Service Discovery客户端 Service DiscoveryDNS-SD DNS-based Service Discovery服务端 Service Discovery服务注册与注销自注册模式第三方注册模式总结参考应用层 在简单的 3 层结构中&#xff0c;Web 服务层既要处理请求&#xff0c;又…

很久没写代码了,这(那)几天真是累死了。。。先写一个幻方的程序吧

1 #include <stdio.h>2 #include <stdlib.h>3 #include <windows.h>4 5 #define EVEN_DOUBLE_4 4 //双偶的最基本类型&#xff0c;4阶双偶6 #define SCREEN_SIZE 19 //屏幕显示不变形的最大尺寸&#xff08;主要是因为窗口大小限制&#xff09;7 #defi…

#pragma once

http://baike.baidu.com/view/1276747.htm?fraladdin 转载于:https://www.cnblogs.com/prayer521/p/4069040.html

后台系统可扩展性学习笔记(八)Service Mesh

文章目录网络传输可靠性将微服务控制下沉到网络栈&#xff1f;Sidecar从 Sidecar 到 Service MeshService Mesh 部署平台参考网络传输可靠性 从计网的学习过程中我们可以知道数据在网络传输中可能会出现一些异常状况&#xff1a; 数据丢失&#xff1a;数据包可能会到达一个缓…

关于Spring batch的学习之CSV2DB

最近在学习Spring batch相关的内容&#xff0c;网上也有不少Spring Batch相关的知识&#xff0c;不过大多都是使用xml进行配置的。这里是我用注解的方式进行相关的学习心得。 首先我们来看如何将一个文本文件中的内容导入到数据库中。 我们先来看一下我们所需要的环境。我们这里…

后台系统可扩展性学习笔记(九)Database Replication

文章目录数据库扩展一致性问题Replication &#xff08;复制&#xff09;异步复制同步复制半同步复制拓扑结构单主结构多主结构无主结构复制具体措施参考数据库扩展 之前在第一章后台系统可扩展性学习笔记&#xff08;一&#xff09;概要谈到&#xff1a;理论上&#xff0c;有…

python中的sum函数.sum(axis=1)

看起来挺简单的样子&#xff0c;但是在给sum函数中加入参数。sum&#xff08;a&#xff0c;axis0&#xff09;或者是.sum(axis1) 就有点不解了 在我实验以后发现 我们平时用的sum应该是默认的axis0 就是普通的相加 而当加入axis1以后就是将一个矩阵的每一行向量相加 例如&…

后台系统可扩展性学习笔记(十)Database Partitioning

为了提升数据库的处理能力&#xff0c;我们把单库扩展成多库&#xff0c;并通过更新同步机制&#xff08;即Replication&#xff09;来保证多份数据的一致性。然而&#xff0c;在 各种复制方案下&#xff0c;每个数据库都持有一份完整数据&#xff0c;基于全量数据提供增删改查…

基于FPGA的HDTV视频图像灰度直方图统计算法设计

随着HDTV的普及&#xff0c;以LCD-TV为主的高清数字电视逐渐进入蓬勃发展时期。与传统CRT电视不同的是&#xff0c;这些高清数字电视需要较复杂的视频处理电路来驱动&#xff0c;比如&#xff1a;模数转换&#xff08;A/D Converter&#xff09;、去隔行&#xff08;De-interla…

后台系统可扩展性学习笔记(十一)Database Denormalization

之前的两篇笔记中谈到了从单库扩展到多库以承载更多的请求量以及单库&#xff08;表&#xff09;拆分成多库&#xff08;表&#xff09;&#xff0c;打破单库的性能瓶颈。 这都是为了应对大数据量下的措施。 然而&#xff0c;除却数据量外&#xff0c;还有一个极其影响单库性能…

Java Swing 影楼管理系统之登录功能

开头打广告&#xff0c;Java1234.com。 首先&#xff0c;来个效果图。 关键代码 1&#xff0c;界面层 private void Jb_DengLuActionPerformed(java.awt.event.ActionEvent evt) {// TODO add your handling code here:String UserName this.Jb_UserNameTxt.getText();String …

Bdsyn百度手机助手是何物,它是怎样神不知鬼不觉地安装到你的电脑里的?

【电脑软件管理中Bdsyn手机助手的问题】Bdsyn手机助手 is developed by Baidu, Inc. and is used by 10 users of Software Informer. 并不是本人安装的&#xff08;应该是自己自己主动安装的&#xff09;&#xff0c;卸载以后过几天又会出如今软件列表里。百度搜索却无法搜索出…

后台系统可扩展性学习笔记(十二)NoSQL

文章目录NoSQL定义NoSQL种类键值存储文档存储宽列存储图形数据库NoSQL 意味着什么ACID vs. BASESQL or NoSQLNoSQL定义 不同于关系型数据库&#xff0c;NoSQL 数据库&#xff08;也叫非 SQL 或非关系型数据库&#xff09;提供的数据存储、检索机制并不是基于表关系建模的。没有…

android2.2应用开发之IccCard(sim卡或USIM卡)

tyle"margin:20px 0px 0px; font-size:14px; line-height:26px; font-family:Arial; color:rgb(51,51,51)"> 如果要做android通讯录的联系人的机卡混排显示&#xff0c;由于手机卡类型的不同&#xff0c;导致手机卡存储容量以及可以存储信息不同&#xff0c;就要涉…

后台系统可扩展性学习笔记(十三)缓存

文章目录在哪儿加缓存缓存什么内容缓存原始查库结果缓存数据对象怎么查询缓存结果预留缓存模式直读模式直写模式回写式缓存绕写式缓存提前刷新模式缓存满了如何处理参考读写分离、分库分表、反范式化、采用 NoSQL……如果这些扩展手段全都上了&#xff0c;数据响应依旧越来越慢…

[linux]gdb调试

使用gdb可以在命令行方便地调试&#xff0c;并且能以命令程序的方式调试源代码。 常用命令简写print-p,step-s,next-n 进入gdb //方式一 gdb test//test 为可执行文件&#xff0c;使用-g编译得到 //方式二 gdb -q //不显示版权信息 file test //file命令打开文件 退出gdb quit …

后台系统可扩展性学习笔记(十四)异步机制与MQ

对于 Web 服务而言&#xff0c;提升可扩展性的主要途径是将耗时的同步工作改成异步处理&#xff0c;从而允许将这些工作“外包”给多个 Worker 去做&#xff0c;或者提前完成能够预知的部分。 异步机制与可扩展性之间的关系需要从&#xff08;异步&#xff09;并行处理的优势说…

RegisterClientScriptBlock与 RegisterStartupScript区别

Page.ClientScript.RegisterClientScriptBlock而用Page.ClientScript.RegisterStartupScript是因为&#xff1a;RegisterStartupScript 把script放置在ASP.NET page的底部&#xff0c;而RegisterClientScriptBlock把script放置在ASP.NET page的顶部&#xff0c;用RegisterClien…

【Web后端笔记】SQL Server与java数据类型对应

编号数据库类型JDBC类型JDBC索引描述1intjava.lang.Integer4 2varcharjava.lang.String12 3charjava.lang.String1 4ncharjava.lang.String1 5nvarcharjava.lang.String12 6textjava.lang.String-1 7ntextjava.lang.String-1 8tinyintjava.lang.Integer-6 9intjava.lang.Intege…

后台系统可扩展性学习笔记

整理了一下笔记目录&#xff0c;将以前学习的一些知识串联起来了&#xff0c;比如cdn、负载均衡、中间件&#xff0c;以前只是各自了解了一点&#xff0c;现在大概理清了后台系统设计中他们各自的作用。 后台系统可扩展性学习笔记&#xff08;一&#xff09;概要 后台系统可扩展…