SIGINT:程序终止信号。当用户按下CRTL+C时通知前台进程组终止进程 或者 kill -2 <pid> 触发。

SIGTERM:程序结束信号, 可以使用 kill -15 <pid> 触发

SIGKILL:用来立即结束程序的运行。可以使用kill -9 <pid> 触发

SIGTERM和SIGKILL的区别:

SIGTERM信号是可以被捕获的,因此可以尝试block,或者忽视,但是SIGKILL不能。

下面写了一个简单的例子来佐证这个事情 sig_test.cpp:

#include <stdlib.h>
#include <signal.h>
#include <unistd.h>
#include <stdio.h>void term_handler(int seg) {printf("sig term handler %d\n", seg);
}void int_handler(int seg) {printf("sig int handler %d\n", seg);
}void kill_handler(int seg) {printf("sig kill handler %d\n", seg);
}int main() {sigset_t sigset;struct sigaction term_act;struct sigaction int_act;struct sigaction kill_act;sigemptyset(&sigset);sigaddset(&sigset, SIGINT);sigaddset(&sigset, SIGTERM);sigaddset(&sigset, SIGKILL);sigemptyset(&term_act.sa_mask);sigemptyset(&int_act.sa_mask);sigemptyset(&kill_act.sa_mask);term_act.sa_flags = 0;term_act.sa_handler = term_handler;int_act.sa_flags = 0;int_act.sa_handler = int_handler;kill_act.sa_flags = 0;kill_act.sa_handler = kill_handler;sigaction(SIGINT, &int_act, 0);sigaction(SIGTERM, &term_act, 0);sigaction(SIGKILL, &kill_act, 0);while(1);exit(0);
}

执行命令编译

g++ ./sig_test.cpp -o sig_test

运行 ./sig_test,结果如下

$ ./sig_test^Csig int handler 2
sig term handler 15
[1]    46423 killed     ./sig_test运行sig_test 后,进程号46423,
kill -2 46423 输出  ^Csig int handler 2
kill -15 46423, 输出 sig term handler 15
kill -9 46423, 输出 [1]    46423 killed     ./sig_test

附加:

终端执行,kill -l 可以查看还可以支持的信号,例如我的mac:

kill -l
HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM URG STOP TSTP CONT CHLD TTIN TTOU IO XCPU XFSZ VTALRM PROF WINCH INFO USR1 USR2

通过,kill -l <名称>可以查看 对应的数字,例如查看 INT的数字

$ kill -l INT
2

所以可以通过

kill -2 <pid> // 模拟INT信号

或者更干脆直接用kill定义的枚举,例如

kill -INT <pid>

信号集 SIGINT, SIGTERM, SIGKILL相关推荐

  1. linux信号:SIGINT、SIGKILL、SIGSTOP、SIGCONT

    目录 1. SIGINT 2. SIGKILL 3. SIGSTOP与SIGCONT 简介 Signal Standard Action Comment SIGINT P1990 Term Inter ...

  2. linux shell trap捕捉信号 附信号表 SIGTERM SIGKILL

    trap捕捉信号有三种形式 第一种: trap "commands" signal-list 当脚本收到signal-list清单内列出的信号时,trap命令执行双引号中的命令. ...

  3. C语言 系统调用操作内核信号集

    // ..使用内存映射可以拷贝文件 /* 对原始文件进行内存映射 创建一个新文件 把新文件的数据拷贝映射到内存中 通过内存拷贝将第一个文件的内存映射区拷贝到第二个文件的内存映射区 释放资源 */// ...

  4. C语言 信号集回调函数 避免子进程在信号回调注册完成之前全部结束

    // ..使用内存映射可以拷贝文件 /* 对原始文件进行内存映射 创建一个新文件 把新文件的数据拷贝映射到内存中 通过内存拷贝将第一个文件的内存映射区拷贝到第二个文件的内存映射区 释放资源 */// ...

  5. SIGINT、SIGKILL、SIGTERM 信号区别

    三者都是结束 / 终止进程运行,但略微有区别. 一.SIGINT 产生方式:键盘 Ctrl + C 产生结果:只对当前前台进程和他的所在的进程组的每个进程都发送 SIGINT 信号,之后这些进程会执行 ...

  6. SIGINT、SIGKILL和SIGTERM的区别

      首先要知道的是SIGINT.SIGKILL和SIGTERM代表的时一种信号.什么是信号?信号是一个 POSIX 内部通信系统:发送通知给进程,以告知其发生的事件.(windows系统不支持). 这 ...

  7. 【B站视频笔记】linux 进程间通信(ipc)信号(软中断信号)signal库函数、可靠信号和不可靠信号、信号集sigprocmask(信号掩码、信号递达Delivery、信号未决Pending)

    [视频教程]Linux信号详解(可靠信号.不可靠信号.阻塞信号.信号处理函数) [博文]Linux信号 文章目录 背景 课程笔记 一.如何让程序在后台运行 1.加"&"符号 ...

  8. Linux网络编程 | 信号 :信号函数、信号集、统一事件源 、网络编程相关信号

    文章目录 信号函数 信号集 统一事件源 网络编程相关信号 Linux 进程信号:信号的概念.生命周期.产生流程.阻塞 在半年前我写过一篇博客介绍了Linux中信号的概念以及处理流程,这次再来深入的讲一 ...

  9. MYSQL中对信号的处理(SIGTERM,SIGQUIT,SIGHUP等)

    原创,因为LINUX系统编程水平有限某些用词不当请指出 一.信号处理以及多线程先信号处理基础知识 在LINUX中信号是一种由内核处理的一种软中断机制,他满足简单.不能携带大量信息.并且要满足一定条件才 ...

最新文章

  1. Bert 如何解决长文本问题?
  2. Educational Codeforces Round 4 C. Replace To Make Regular Bracket Sequence 栈
  3. Linux操作系统上lsof命令详解
  4. python 作用域 前缀_Python面试题:杂项内容
  5. grunt入门讲解1:grunt的基本概念和使用
  6. java实现高斯赛德尔算法解线性方程组
  7. vue中解决Uncaught ReferenceError: regeneratorRuntime is not defined问题
  8. 安防企业转型不断 谁是跨界之王?
  9. Mac OS X Yosemite Arduino安装CH340 USB转串口驱动
  10. Java 函数式编程入门
  11. restful xml_使用入站适配器公开HTTP Restful API。 第1部分(XML)
  12. linux系统学习第一天
  13. css不继承上级样式_这个笔记《CSS基本概念》,让菜鸟轻松学会给网页穿外衣
  14. 前端面试题2016--CSS
  15. restclient发送json_如何使用restclient来发送post请求参数
  16. Ubuntu下载安装CUDA
  17. buuctf misc部分wp
  18. java 篮球队淘汰赛冠军_《黑白2》口袋世界淘汰赛挑战各馆主冠军方法
  19. Android 切割图片
  20. 《大数据》第七章 聚类 K-means算法 BFR算法 CURE算法

热门文章

  1. 信道检测手机软件 ios_五款有趣的手机软件推荐,要黑科技还是有趣?自己选!...
  2. 计算机系统基础中的sub指令,计算机系统基础(961)
  3. Swagger和SpringFox
  4. monit mysql_monit安装配置
  5. 手把手教你在windows虚拟机安装带网络的Linux系统
  6. 写一个简单高效的 JSON 查询器
  7. 搭建本地私有的git服务器
  8. 【SVM预测】基于粒子群算法优化实现SVM数据分类matlab源码
  9. 2021云栖大会 | 谐云携手阿里云共拓云原生“应用定义”最佳实践
  10. 漏洞分析——二进制漏洞