信号概念

程序在执行的时候,几乎任何时刻都会发生事件。

信号通常用来向一个进程通知事件。

信号是不可提前预知的,所以信号是异步的

信号随时都可能发生,接收信号的进程也可以没有控制权。

每个信号名都以SIG开头,信号名的定义在<signal.h>中。

许多情况下都会出现信号,如硬件异常,非法的内存引用,软件异常等等。

前面讲过的kill函数就是向目标进程发一个SIGKILL信号,就和kill命令一样。

当进程收到一个信号,它可以对信号采取如下三种措施之一

  –忽略这个信号;

  –捕获这个信号,这需要执行一段称为信号处理器的特殊代码;

  –允许执行信号的默认操作。

当信号发生的事件出现时,比如硬件异常,就会产生一个针对具体进程的信号。

当进程对发送给它的信号采取措施的时候,就叫该信号被传送。

产生信号和递送信号之间的时间间隔称为信号未决。

递送信号可以被阻塞或延迟。

一个信号一直被延迟,直到接触阻塞或接到进程对该信号的部署方式改变为忽略为止。

信号的部署是指进程如何响应信号。

进程可以忽略信号、用默认操作处理信号、响应这个信号。

进程不能简单的通过判断一个变量,例如errno来判断是否出现了一个信号。

常见信号说明


信号名


说明


SIGABRT


调用abort产生此信号,进程异常终止。


SIGALRM


调用alarm设置计时器超时时,产生此信号。


SIGHLD


一个进程终止时发送该信号给其父进程。


SIGFPE


表示一个算数运算异常,例如除以0


SIGINT


用户按Ctrl+C键,产生该信号


SIGKILL


这是个不能被捕捉或忽略的信号,kill 9发送该信号


SIGPIPE


如果在写到管道时读进程已经终止,就产生该信号


SIGSEGV


该信号指示进程进行了 一次无效的内存引用


SIGTERM


由kill命令(1)发送的系统默认终止信号


SIGTSTP


用户按Ctrl+Z键产生该信号


SIGUSR1


用户定义信号,可用于应用程序


SIGUSR2


用户定义信号,可用于应用程序

复制去Google翻译翻译结果

时间: 2024-10-14 14:01:17

信号概念的相关文章

LINUX 信号概念详解

LINUX 信号概念详解 我们运行如下命令,可看到Linux支持的信号列表: # kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 17) SIGCHLD 18) SIGCONT 19) SIGSTOP

UNIX高级环境编程(13)信号 - 概念、signal函数、可重入函数

信号就是软中断. 信号提供了异步处理事件的一种方式.例如,用户在终端按下结束进程键,使一个进程提前终止. ? 1 信号的概念 每一个信号都有一个名字,它们的名字都以SIG打头.例如,每当进程调用了abort函数时,都会产生一个SIGABRT信号. 每一个信号对应一个正整数,定义在头文件<signal.h>中. 没有信号对应整数0,kill函数使用信号编号0表示一种特殊情况,所以信号编号0又叫做空信号(null signal). 下面的各种情况会产生一个信号: 当用户在终端按下特定的键时,会产生

Linux 信号概念

程序在执行的时候,几乎任何时刻都会反生事件. 信号通常用来向一个进程通知事件. 信号是不可提前预知的,所以信号是异步的. 信号随时都可能发生,接收信号的进程也可以没有控制权. 每个信号名都以SIG开头,信号名的定义在<signal.h>中. 信号名一般都是宏,内部通常是一个正整数. 许多情况下都会出现信号,如硬件异常,非法的内存引用,软件异常等等. kill函数就是向目标进程发一个SIGKILL信号,就和kill命令一样. 当进程收到一个信号,他可以对信号采取如下三种措施之一 --忽略这个信号

[学习笔记]信号基本概念(中断和信号)/名称及常用信号/信号处理/signal函数实践

1基本概念 中断 q  中断是系统对于异步事件的响应 q  中断信号 q  中断源 q  现场信息 q  中断处理程序 q  中断向量表 异步事件的响应:进程执行代码的过程中可以随时被打断,然后去执行异常处理程序 生活中的中断和计算机系统中的中断 1)  无中断生活场景 张三看书,厨房烧水 2)有中断的生活场景 张三看书,设置闹钟,厨房烧水. 闹钟发出中断信号,张三把书合好(第20页),去厨房把开水事情处理好,张三重新打开20页进行阅读. 3)计算机系统的中断场景 中断源发出中断信号,CPU判断

Linux之信号第二谈

重提信号概念 前一篇中提到了信号的概念,并且对信号的产生及一些属性有了一定的认识,这一次,要从更加深入的角度看待信号. 之前提到过,当我的进程在接收到信号之前,就已经知道了,当我接收到某种信号之后就要发生某一项动作,换句话说,在进程内部,一定存在这某种结构,将这些信息都记录了下来,很明显,对于进程而言,这些信息都会保存在它的PCB当中. 首先我们来认识这样几个概念: 信号递达(Delivery):执行信号的处理动作: 信号未决(Pending):信号从产生到递达之间的状态: 阻塞(Block):

apue学习笔记(第十章 信号)

本章先对信号机制进行综述,并说明每种信号的一般用法. 信号概念 每个信号都有一个名字,这些名字都以3个字符SIG开头.在头文件<signal.h>中,信号名都被定义为正整形常量. 在某个信号出现时,可以按下列3种方式之一进行处理: 1 忽略该信号.大多数信号都可以使用这种方式进行处理,但有两种信号却决不能被忽略:SIGKILL和SIGSTOP(只能执行系统默认动作). 2 捕获信号.通知内核在某信号发生时,调用一个用户函数对这种时间进行处理. 3 执行系统默认动作.对于大多数信号的系统默认动作

《Unix环境高级编程》读书笔记 第10章-信号

1.引言 信号是软件中断. 信号提供了一种处理异步事件的方法. 2. 信号概念 信号的名字都是以3个字符SIG开头. Linux3.2.0支持31种信号.FreeBSD.Linux和Solaris作为实时扩展都支持另外的应用程序定义的信号. 在头文件signal.h(其中include的bits/signum.h)中,信号名都被定义为正整数常量,不存在编号为0的信号.kill函数对信号编号0有特殊的应用. 很多条件可以产生信号: 用户按下某些终端键时:Ctrl+C.Ctrl+\.Ctrl+Z 硬

【APUE】信号

一.信号概念 信号都被定义为正整数,不存在编号为0的信号. 信号是异步事件的经典实例.产生信号的事件对进程而言是随机出现的,进程不能简单地测试一个变量来判别是否出现了一个信号,而是必须告诉内核在此信号出现时,请执行下列操作. 信号的处理有三种方式: 1.忽略此信号.大多数信号都可使用这种方式进行处理,SIGKILL和SIGSTOP不能被忽略,它们向超级用户提供了使进程终止或停止的可靠方法. 2.捕捉信号,通知内核在某种信号发生时调用一个用户函数.注意:不能捕捉SIGKILL和SIGSTOP信号

详解linux进程间通信-信号

前言:之前说看<C++ Primer >暂时搁浅一下,迷上公司大神写的代码,想要明白,主要是socket.进程间通信! 知道进程间通信:信号.信号量.管道.消息队列.共享内存(共享存储),也能写些简单代码进行通信,但不知道应用在哪?感觉很多小伙伴跟我有类似经历吧? 一.应用实例: 要去linux设备上去添加.改密用户:本地去linux设备添加用户,用socket实现,其实大神改的ssh源码来实现的,这不是我要讲的重点,而我要讲的是准备过程,去登陆linux设备,要准备好:管理员.密码等. 简略