之前看信号的时候,没有太注意不同信号的对比.今天再次看到的时候,突然感觉对一些信号,非常相似,乃至非常容易混淆.今天周末就抽空总结一下.

一、关闭进程信号

常见的4中关闭进程信号是SIGKILL,SIGINT,SIGTERM,SIGQUIT.

  1. SIGKILL,就是为了关闭进程用的,无法捕获以及忽略.场景是,管理员把一些占用资源的进程或者无法掌控的孤儿进程杀死.
  2. SIGINT,interrupt(中断)进程,这个是可以捕获以及忽略。可以使用ctrl+c发出信号,直接发给父进程以及子进程,这样的话就可以把这个程序所有的进程都可以关闭掉。
  3. SIGTERM,terminate(终止)进程,这个也是可以捕获以及忽略的。和SIGINT相比,就是没有相应的键盘控制命令。如果要去关闭所有的进程的话,只能挨个的发给所有的进程。
  4. SIGQUIT,quit(退出)进程,这个也是可以捕获以及忽略的。可以使用ctrl+\发出信号,直接发给父进程以及子进程。如果是不捕获的话,他就会产生core文件。

键盘快捷键最大的好处就是发给所有的进程。

最下面我们用程序来验证一下。

第一组 关闭进程信号 程序验证 

先上代码。

#include <stdio.h>

#include <stdlib.h>

#include <unistd.h>

#include <signal.h>

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,从停止变成了运行状态。

参考链接:http://www.linuxidc.com/Linux/2015-05/117695.htm

Linux 两组信号对比(关闭和停止进程信号)的更多相关文章

  1. Linux 两组信号对比

    博客逐步迁移到,独立博客,原文地址 http://www.woniubi.cn/two_groups_signal_difference/ 之前看信号的时候,没有太注意不同信号的对比.今天再次看到的时 ...

  2. echart两组柱状图对比时,不同类型根据各类型的最大值为基准进行展示

    项目中遇到的问题:因为数据太小,箭头的地方展示不出来,这时的两组对比数据是根据一个最大值为基准进行渲染的.但我们想实现不同类型的对比根据不同的基准值渲染. 理想效果如下图: 实现代码: option ...

  3. 【linux】系统编程-1-进程、管道和信号

    目录 1. 进程 1.1 概念 1.2 查看进程 1.3 启动新进程 1.3.1 system() 函数 1.3.2 fork() 函数 1.3.2 exce 系列函数 1.3.2.1 exce 系列 ...

  4. 解决linux下tomcat停止进程任存在问题

    解决linux下tomcat停止进程任存在问题 在Linux下(之所以强调linux下,是因为在windows下正常),执行tomcat ./shutdown.sh 后,虽然tomcat服务不能正常访 ...

  5. Linux 下Tomcat的启动、关闭、杀死进程

    Linux下Tomcat的启动.关闭.杀死进程 打开终端 cd /java/tomcat #执行 bin/startup.sh #启动tomcat bin/shutdown.sh #停止tomcat ...

  6. linux 进程学习笔记-进程信号sigal

    信号(或软中断)是在软件层次上对中断的一个模拟,其运行在“用户空间”,一个进程对另外一个或几个进程通过发送信号来实现异步通信.当接收进程接收到信号后,其可以注册一下处理函数来说对这些信号进行处理(也可 ...

  7. Linux 网络编程的5种IO模型:信号驱动IO模型

    Linux 网络编程的5种IO模型:信号驱动IO模型 背景 上一讲 Linux 网络编程的5种IO模型:多路复用(select/poll/epoll) 我们讲解了多路复用等方面的知识,以及有关例程. ...

  8. 用 set follow-fork-mode child即可。这是一个 gdb 命令,其目的是告诉 gdb 在目标应用调用fork之后接着调试子进程而不是父进程,因为在 Linux 中fork系统调用成功会返回两次,一次在父进程,一次在子进程

    GDB的那些奇淫技巧 evilpan 收录于 Security  2020-09-13  约 5433 字   预计阅读 11 分钟  709 次阅读  gdb也用了好几年了,虽然称不上骨灰级玩家,但 ...

  9. DOS 和 Linux 常用命令的对比

    DOS 和 Linux 常用命令的对比 许多在 shell 提示下键入的 Linux命令都与你在 DOS 下键入的命令相似.事实上,某些命令完全相同. 本附录提供了 Windows的 DOS 提示下的 ...

随机推荐

  1. 细说tomcat之集群session共享方案

    1. Tomcat Cluster官网:http://tomcat.apache.org/tomcat-7.0-doc/cluster-howto.htmlTomcat原生支持的集群方案,通过组播消息 ...

  2. 启动aspx文件错误

    有一次,为了模仿翻页效果,设置的启动也是aspx文件.当时因为重装系统的原因,我的系统暂时不支持aspx文件的发布访问.所以,我就在MIME Type里面添加了对aspx文件的访问,如下图: 这样就可 ...

  3. 【python小练】0010

    第 0010 题:使用 Python 生成类似于下图中的字母验证码图片 思路: 1. 随机生成字符串 2. 创建画布往上头写字符串 3. 干扰画面 code: # codeing: utf-8 fro ...

  4. Linux centos6.7网卡配置

    系统安装完成后 以此执行以下命令 相当于自动获取IP地址 setup命令——Network configuration———Device configuration———eth0 依次保存退出 实际上 ...

  5. String,StringBuilder,StringBuffer区别

    一.String,StringBuilder,StringBuffer的大概了解 大家知道String,StringBuilder,StringBuffer三个的基本应用场景. String会一直创建 ...

  6. Debian Security Advisory(Debian安全报告) DSA-4410-1 openjdk-8 security update

    Debian Security Advisory(Debian安全报告) DSA-4410-1 openjdk-8 security update Package :openjdk-8 CVE ID: ...

  7. a*寻路分析

    http://dev.gameres.com/Program/Abstract/Arithmetic/A%20Pathfinding%20for%20Beginners.htm 定义: 绿色节点为A ...

  8. github上face_recognition工程项目实践

    一.安装开发环境 1.安装dlib和相关Python依赖 先下载dlib源码: git clone https://github.com/davisking/dlib.git 编译dlib源码:(可以 ...

  9. cygwin 安装包管理器 apt-cyg

    https://github.com/transcode-open/apt-cyg apt-cyg is a simple script. To install: lynx -source https ...

  10. 第20月第18天 小码哥swift

    1. 9月12日第一次更新 第二篇玩转[斗鱼直播APP]系列之界面分析 第三篇玩转[斗鱼直播APP]系列之项目部署 第四篇玩转[斗鱼直播APP]系列之获取APP图片资源 第五篇玩转[斗鱼直播APP]系 ...