linux中的信号1——信号概述

以下内容源于朱有鹏《物联网大讲堂》课程的学习整理,如有侵权,请告知删除。


1、信号是内容受限的一种异步通信机制

(1)信号的目的:用来进程间通信(IPC)、进程和内核间的通信;

(2)信号是异步的(类似于软件中断,对比硬件中断,如按键,不知道什么时候按下);

(3)信号本质上是(int型)数字编号(每个编号有特定的含义),内容是十分有限的。


2、信号由谁发出

(1)用户在终端按下按键;

(2)硬件异常后由操作系统内核发出信号(比如,除以0,导致程序出错);

(3)用户使用kill命令向其他进程发出信号;

(4)某种软件条件满足后也会发出信号,如alarm闹钟时间到会产生SIGALARM信号,向一个读端已经关闭的管道write时会产生SIGPIPE信号。


3、信号由谁处理、如何处理

(1)忽略信号;

(2)捕获信号:信号绑定一个信号处理函数,捕获信号后执行该处理函数。

(3)默认处理(当前进程没有明显地管理这个信号,默认:忽略或终止进程)


4、常见信号介绍

  • 在/usr/include/i386-linux-gnu/bits中定义,信号的编号一般从1开始。
  • 其中SIGKILL是无法忽略、无法拦截的,但必须有权限。
  • 其中SIGCHILD是wait阻塞时,期待的信号。

linux中的信号1——信号概述