当前位置:   article > 正文

【Linux】信号概述_linux 信号表

linux 信号表

橙色

1、信号概念

信号是 Linux进程间通信的最古老的方式之一,是事件发生时对进程的通知机制,有时也称之为软件中断,它是在软件层次上对中断机制的一种模拟,是一种异步通信的方式。信号可以导致一个正在运行的进程被另一个正在运行的异步进程中断,转而处理某一个突发事件。

产生信号的几种方式:

  • 对于前台进程,用户可以通过输入特殊的终端字符来给它发送信号,比如ctrl + c 会给进程发送一个中断进程。
  • 硬件发生异常,硬件检测到一个错误条件并通知内核,随即再由内核发送相关信号给相关进程。
  • 运行 kill 命令或函数
  • 系统状态发生变化

使用信号的两个主要目的:

  • 让进程知道已经发生了一个特定的事情
  • 强迫进程执行它自己代码中的信号处理程序

查看系统定义的信号列表:kill -l
在这里插入图片描述
前31个为标准信号(会用到),34-64为预定义好的信号(基本用不到)

2、Linux常用信号表

在这里插入图片描述

3、信号的5种默认处理动作

查看进程的详细信息: man 7 signal

信号的5中默认处理动作:

  • Term     终止进程
  • Tgn     当前进程忽略掉这个信号
  • Core     终止进程,并生成一个Core文件
  • Stop     暂停当前进程
  • Cont     继续执行当前被暂停的进程

SIGKILL和SIGSTOP信号不能被捕捉、阻塞或者忽略,只能执行默认动作。

4、如何生成core文件

首先利用ulimit -a命令查看core file size文件是否为零,如果像下图一样为0,则通过ulimit -c 1024进行修改
在这里插入图片描述

修改后结果如图:
在这里插入图片描述

core.c文件内容如下:

#include <stdio.h>
#include <string.h>

int main() {

    char buf[100];

    strcpy(buf, "hello");

    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

在这里插入图片描述

在上图中通过gdb开始调试a后,直接run,就能显示错误
在这里插入图片描述

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/运维做开发/article/detail/959559
推荐阅读
相关标签
  

闽ICP备14008679号