信号

本文深入探讨了Linux环境下的信号机制,包括信号的基本属性、信号的产生、如何通过kill命令、raise和abort函数等产生信号,以及信号的捕捉和处理。重点讲解了信号的基本属性如软中断和时延性,信号的四种要素,以及信号处理函数如signal和sigaction。此外,还详细介绍了信号集操作函数,如sigprocmask和sigpending函数的功能和用法。

1、概念

  提及信号我们首先想到的是什么?有人想到赛场上裁判的信号枪,有人想到路口的红绿灯……;信号在我们生活中随处可见。在计算机中,信号是信息的载体,Linux/UNIX 环境下,古老、经典的通信方式, 现下依然是主要的通信手段。在这篇文章中我们就主要聊聊信号。

基本属性

  信号的基本属性可以总结为两方面,即:软中断和时延性。
  例如:A给B发送信号,B收到信号之前执行自己的代码,收到信号后,不管执行到程序的什么位置,都要暂停运行,去处理信号,处理完毕再继续执行。与硬件中断类似——异步模式。但信号是软件层面上实现的中断,早期常被称为“软中断”。由于信号是通过软件方法实现,其实现手段导致信号有很强的延时性。但对于用户来说,这个延迟时间非常短,不易察觉。

信号四要素

  1. 编号 2. 名称 3. 事件 4. 默认处理动作 ;
  可通过man 7 signal查看帮助文档获取。也可查看/usr/src/linux-headers-3.16.0-30/arch/s390/include/uapi/asm/signal.h

Signal      Value     Action   Comment
────────────────────────────────────────────
SIGHUP       1        Term    Hangup detected on controlling terminal or death of controlling process
SIGINT       2        Term    Interrupt from keyboard
SIGQUIT      3        Core    Quit from keyboard
SIGILL       4        Core    Illegal Instruction
SIGFPE       8        Core    Floating point exception
SIGKILL      9        Term    Kill signal
SIGSEGV      11       Core    Invalid memory reference
SIGPIPE      13       Term    Broken pipe: write to pipe with no readers
SIGALRM      14       Term    Timer signal from alarm(2)
SIGTERM      15       Term    Termination signal
SIGUSR1   30,10,16    Term    User-defined signal 1
SIGUSR2   31,12,17    Term    User-defined signal 2
SIGCHLD   20,17,18    Ign     Child stopped or terminated
SIGCONT   19,18,25    Cont    Continue if stopped
SIGSTOP   17,19,23    Stop    Stop process
SIGTSTP   18,20,24    Stop    Stop typed at terminal
SIGTTIN   21,21,26    Stop    Terminal input for background process
SIGTTOU   22,22,27    Stop    Terminal output for background process

The signals SIGKILL and SIGSTOP cannot be caught, blocked, or ignored.      

  在标准信号中,有一些信号是有三个“Value”,第一个值通常对alpha和sparc架构有效,中间

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值