信号分类:

进程可以捕捉到信号,并根据这些信号做出回应

1.信号分为下面这些:

2. 进程捕捉到信号有三种处理方式:

  1. 忽略此信号 SIGIGN
  2. 执行该信号的默认动作SIG_DFL
  3. 提供一个信号处理函数,要求内核在处理该信号时,切换到用户态执行整个函数

3. 模拟2号信号

  1. ctrl +c 信号,只能发送给前台进程,一个命令后面加入&会进入后台执行
  2. shell可以同时运行一个前台进程和多个后台进程,但是只有前台进程能够捕捉到整个信号
  3. 前台进程在执行过程中接收这个信号,也就是说用户进程的用户代码运行到任何地方,都有可能瘦到SIGINT信号打断。
#include<stdio.h>
#include<signal.h>
#include<unistd.h>
int main(){signal(2,SIG_IGN);while(1){printf("test sig_ign\n");sleep(2);}return 0;
}


使用自定义的信号处理函数

#include<stdio.h>
#include<signal.h>
#include<unistd.h>
void handler(int num){printf("catch signal num : %d",num);
}
int main(){signal(2,handler); //一旦信号产生,便执行注册的回调函数while(1){printf("test handler\n");sleep(2);}return 0;
}


9号信号为什么不能被捕捉?
如果所有信号都能被捕捉,那么就无法停止掉一些恶意进程,没法控制了

Linux系统编程 -- 信号及signal函数相关推荐

  1. Linux系统编程 37 -makefile2个函数和clean

    Linux系统编程 37 -makefile2个函数和clean 学习笔记 一个makefile 就是用一个个规则凑在一起 2个函数 wildcard patsubst wildcard 百搭牌,通配 ...

  2. Linux系统编程-信号入门2

    早,继续记录我的学习心得. 分享一个关于机械练习和有目的练习的看法. 机械的练习: 只是埋头干!我刚刚挥起球拍,努力去击球.我刚刚听到了那些数字,想办法去记住.我刚刚看到了那些数学题,正试着解答. 有 ...

  3. Linux系统编程-信号入门3

    早,继续记录我的学习心得. 机械的练习: 只是埋头干!我一直在挥着球拍,努力去击球.我一直在看这道数学题,正试着解答.我一直在重复写代码,试图成为技术大牛. 有准确目的的练习: 意味着要比机械的练习更 ...

  4. _Linux系统编程—信号集操作函数

    先来回顾一下未决信号集是怎么回事. 信号从产生到抵达目的地,叫作信号递达.而信号从产生到递达的中间状态,叫作信号的未决状态.产生未决状态的原因有可能是信号受到阻塞了,也就是信号屏蔽字(或称阻塞信号集, ...

  5. 十四、Linux系统编程-信号(一)中断、信号、中断和信号

    一.中断 (1).中断概念       中断是用以提高计算机工作效率.增强计算机功能的一项重要技术.最初引入硬件中断,只是出于性能上的考量.如果计算机系统没有中断,则处理器与外部设备通信时,它必须在向 ...

  6. linux系统编程3—文件存储函数

    文章目录 1.innode 2.dentry 3.stat函数 4.lstat函数 5.access函数.chmod函数.truncate函数 6.link函数 7.unlink函数 unlink的特 ...

  7. Linux系统编程.NO7——目录操作函数

    5. 目录文件管理函数 5.1. 目录文件概念 目录在Linux中也是文件,也有对应的文件指针,每次读目录之前也要先打开目录,然后目录指针就出现了,第一次读就是第一个文件的信息,然后第二次读就是第二个 ...

  8. linux系统编程下的open函数使用方法

    目录 1.句柄(file descriptor 简称fd) 2.使用open前需要先包含头文件 3.参数说明 3.1 参数1(pathname) 3.2 参数2(flags) 3.3 参数3(mode ...

  9. linux系统编程3-read、lseek函数

    //read函数原型:ssize_t read(int fd, void *buf, size_t count); //lseek函数原型:off_t lseek(int fd, off_t offs ...

  10. 嵌入式学习之linux系统编程----1 了解linux编程并且在ubuntu以及ARM上运行测试程序

    1.何为linux系统编程? linux系统编程也称为linux下的高级编程,它介于应用层与驱动层之间. 一般来说分为三个层面,分别是:应用层(写一个qt程序或者c程序就属于是应用层面).驱动层(比如 ...

最新文章

  1. 深入浅出统计学(十一)总体和样本的估计
  2. 重磅!复旦邱锡鹏老师NLP实战code解读开源!
  3. 计算机硬件的作用论文,计算机硬件的作用论文.doc
  4. 未来中国最受宠的人才
  5. UA Stat PhD Qualify Problems for Finite Sample Space Probability
  6. 华为手机在开发Android调试时logcat不显示输出信息的解决办法
  7. String的内存模型,为什么String被设计成不可变的
  8. el replace 表达式_EL表达式运算符、常用函数详解
  9. 查看你某条sql是哪个用户执行的_django_debug_toolbar:查看访问某个页面执行sql的详细...
  10. HarmonyOS应用如何开发,使用什么开发工具及安装使用教程说明!
  11. 港中文等提出:开放世界实体分割
  12. UWP 手绘视频创作工具技术分享系列 - 位图的绘制
  13. 企业内网安全十大防护策略
  14. 思科修复 ASA/FTD 防火墙高危缺陷,已遭利用
  15. zend反编译-dezender 使用
  16. .net 初学者。学习笔记 [获取varchar32主键的最大ID值]
  17. ACCESS常用数字类型的说明和取值范围
  18. Linux 性能测试与分析-转
  19. 20200708每日一句
  20. PTA C语言程序设计 单项链表

热门文章

  1. 7-1 特殊a串数列求和 (20 分)
  2. Android AbsoluteLayout 绝对布局
  3. mongodb入门基本语法
  4. [置顶] MySQL -- 创建函数(Function
  5. stringbuffer字符串反转操作
  6. 让一个数字显示指定位数
  7. 查找目录下的所有文件中是否含有某个字符串
  8. Android Fragment-APP调用其他APP中的Fragment 1
  9. 【转】阿里去IOE运动
  10. G1手机上的VOIP之旅 - SIP Server + SipDroid