linux之前关闭信号,Linux 两组信号对比(关闭和停止进程信号)
之前看信号的时候,没有太注意不同信号的对比.今天再次看到的时候,突然感觉对一些信号,非常相似,乃至非常容易混淆.今天周末就抽空总结一下.
一、关闭进程信号
常见的4中关闭进程信号是SIGKILL,SIGINT,SIGTERM,SIGQUIT.SIGKILL,就是为了关闭进程用的,无法捕获以及忽略.场景是,管理员把一些占用资源的进程或者无法掌控的孤儿进程杀死.
SIGINT,interrupt(中断)进程,这个是可以捕获以及忽略。可以使用ctrl+c发出信号,直接发给父进程以及子进程,这样的话就可以把这个程序所有的进程都可以关闭掉。
SIGTERM,terminate(终止)进程,这个也是可以捕获以及忽略的。和SIGINT相比,就是没有相应的键盘控制命令。如果要去关闭所有的进程的话,只能挨个的发给所有的进程。
SIGQUIT,quit(退出)进程,这个也是可以捕获以及忽略的。可以使用ctrl+\发出信号,直接发给父进程以及子进程。如果是不捕获的话,他就会产生core文件。
键盘快捷键最大的好处就是发给所有的进程。
最下面我们用程序来验证一下。
第一组 关闭进程信号 程序验证
先上代码。
#include
#include
#include
#include
void process(int signo){
printf("signo:%d,pid:%d\n",signo,getpid());
}
void cleanup(){
printf("cleanup,pid:%d\n",getpid());
}
int main()
{
pid_t pid;
atexit(cleanup);
signal(SIGINT, process);
signal(SIGTERM, process);
//signal(SIGQUIT, process);
if( (pid = fork()) == 0 )
{
printf("child pid:%d\n",getpid());
while(1){
sleep(1);
}
}else{
printf("parent pid:%d\n",getpid());
while(1){
sleep(1);
}
}
return 0;
}
SIGKILL比较简单,我们就不再验证了。先验证一下SIGINT。
可以看到输入ctrl+c的时候,父子进程都收到相关的信号。但是我输入kill -2 742的时候,只有父进程收到了,不会传给子进程。
下面我们验证SIGQUIT产生core。
可能部分的机器默认是不产生,我们需要输入几个命令。
#设置core文件大小,这里是无限制
ulimit -c unlimited
#core后面跟着pid
sudo sysctl kernel.core_uses_pid=1
#core文件存放路径,放在当前的文件夹下
sudo sysctl kernal.core_pattern=core
二、停止信号
这组信号对比,相对上一组就简单多了.
SIGSTOP,程序挂起,没有相应的快捷键,不能被捕获以及忽略。
SIGTSTP,程序挂起,快捷键ctrl+z,可以被捕获以及忽略。
如果挂起之后,怎么再次让他们启动呢。简单一点,我们可以输入jobs,然后看一下他们的索引值。然后fg启动他们。
我们也可以给他们发送SIGCONT信号,让他们启动起来。不过这个时候,他们的只能在后台运行了。
这个时候,就可以看到他们的状态从T变成了S,从停止变成了运行状态。
Linux 两组信号对比
linux之前关闭信号,Linux 两组信号对比(关闭和停止进程信号)相关推荐
- 前后两组结构相同的数据进行比较,找出新增的,需要删除的,原来存在的
想象现在服务器在向客户端发送数据,每隔几秒发送一次数据,客户端需要将前后两次的数据进行对比,找出相对于收的数据需要将上一次的数据删除的部分,以及此次新增加的,还有原来就已经存在的数据. 代码如下: v ...
- 同期对比图_Excel展示两组同期数据,这种左右对比图真好看,只需六步搞定
Excel数据展示过程中,一幅好的图表不仅仅代表的是美观,而且也能更加显而易见的看清楚数据的情况.对两组同期数据做对比图,这种情况相信大家都见到过. 相信许多同学在进行这样的两组数据对比的时候,一般都 ...
- oracle 每月同期对比,两年数据同期对比表_月份对比表格怎么做
同期及上期数据对比处理示例.sql --雇员数据CREATE TABLE Employee( ID int, --雇员编号(主键) Name nvarchar(10), --雇员名称Dept nvar ...
- linux线程关闭信号,Linux/UNIX用同步方法处理异步信号
一. 前言 Linux/UNIX进程信号处理复杂易出错,而用在多线程中就更加复杂脆弱,这里不探讨相关历史渊源,只给出一种在实践中简单可靠的信号处理方式.后文讨论的线程模型是POSIX thread(p ...
- linux 服务器间通信,Linux 下的进程间通信:套接字和信号 | Linux 中国
原标题:Linux 下的进程间通信:套接字和信号 | Linux 中国 学习在 Linux 中进程是如何与其他进程进行同步的. -- Marty Kalin 本篇是 Linux 下(IPC)系列的第三 ...
- linux 之进程信号
1 信号本质 软中断信号(signal,又简称为信号)用来通知进程发生了异步事件.在软件层次上是对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的. ...
- 【Linux系统编程】Linux信号列表
00. 目录 文章目录 00. 目录 01. Linux信号编号 02. 信号简介 03. 特殊信号 04. 附录 01. Linux信号编号 在 Linux 下,每个信号的名字都以字符 SIG 开头 ...
- 【Linux系统编程】Linux 信号列表
在 Linux 下,每个信号的名字都以字符 SIG 开头,每个信号和一个数字编码相对应,在头文件 signum.h 中,这些信号都被定义为正整数.信号名定义路径:/usr/include/i386-l ...
- Linux 进程信号:信号的概念、生命周期、产生流程、阻塞
信号的概念 信号的生命周期 信号的阻塞 信号的概念 信号 信号是一个软中断.操作系统通过信号通知某个进程发生了某件事件,然后中断这个进程当前操作,让它优先去处理这个事件. 我们在linux下常用的ki ...
最新文章
- PHP设计模式之访问者模式
- 开篇有益-解析微软微服务架构eShopOnContainers(一)
- Axure RP 第一部分
- 网站排名和权重骤降的原因是什么?又该如何处理?
- php7与php5的区别,PHP7和PHP5区别
- Python为何如此优秀?斯坦福教授告诉你!
- Android下的junit 单元测试
- JDK中DNS缓存的分析
- 上银伺服驱动器说明书_威海伺服驱动器维修,诚信互利
- 《Windows via C/C++》学习笔记 —— 用户模式的“线程同步”之“条件变量”
- eversync safari_印象笔记 Evernote 同步插件 for WordPress
- 十六、that的用法汇总
- python知识点总结2
- html点击按钮弹出悬浮窗_html弹窗,html网页弹窗代码
- java实现xls转换为xlsx
- fiddler拦截模拟器中app的请求设置方法
- Android8.1 源码修改之插入SIM卡默认启用Volte功能
- AndroidQ(10)黑暗模式适配
- Python 那么火,到底可以用来做什么?我们来说说 Python3 的主要应用
- 权益法编制合并报表及实例
热门文章
- 找不到wifi信号,但是连得上热点?
- hello(javac不是内部或外部命令)
- html 网页 立方米m³ n次幂 乱码问题
- 西门子SMART200PLC通讯程序集合。 根据工程实践整合200SMART支持的各种通讯,包括和第三方如开放式ISO和TCP的服务器和客户端
- 基于单片机的波形发生器,可以发送正弦、三角、锯齿和方波,可以支持调频和调幅,能够提供相关设计说明。
- 优质杀毒软件_优质科学软件的标志
- 客户资源怎么找:一文带你了解大数据获客方式,不再担心找不到客户资源
- React 基础案例 | 可折叠的问题列表和按分类展示的美食菜谱(三)
- 木色世界android版本,我的木筏世界手游下载-我的木筏世界安卓版下载v1.0-魅卓网...
- Minecraft源码分析(3) - 刷怪笼(MobSpawner)逻辑