《APUE》读书笔记—第十章信号(上)

  信号时软中断,很多比较重要的应用程序都需要处理信号,信号提供了一种处理异步事件的方法。每个信号都一个名字,以SIG开头,在<signal.h>头文件中定义信号类型,都是正整数(信号编号)。

  产生信号的条件:

(1)当用户按某些终端键时,引发终端产生的信号。

(2)硬件异常产生信号。

(3)进程调用kill函数将信号发送给另外一个进程或进程组。

(4)用户用kill命令将信号发送给其他进程。

(5)检测到某种软件条件已经发送,并将其通知有关进程时候产生信号。

  内核在信号出现时候处理方式有:(1)忽略此信号,(2)铺捉信号,(3)执行系统默认动作。

Unix系统信号如下:

 其中SIGKILL和SIGSTOP信号时不能忽略和捕获的,执行默认动作。


Signal


Description


SIGABRT


由调用abort函数产生,进程非正常退出


SIGALRM


用alarm函数设置的timer超时或setitimer函数设置的interval timer超时


SIGBUS


某种特定的硬件异常,通常由内存访问引起


SIGCANCEL


由Solaris Thread Library内部使用,通常不会使用


SIGCHLD


进程Terminate或Stop的时候,SIGCHLD会发送给它的父进程。缺省情况下该Signal会被忽略


SIGCONT


当被stop的进程恢复运行的时候,自动发送


SIGEMT


和实现相关的硬件异常


SIGFPE


数学相关的异常,如被0除,浮点溢出,等等


SIGFREEZE


Solaris专用,Hiberate或者Suspended时候发送


SIGHUP


发送给具有Terminal的Controlling Process,当terminal被disconnect时候发送


SIGILL


非法指令异常


SIGINFO


BSD signal。由Status Key产生,通常是CTRL+T。发送给所有Foreground Group的进程


SIGINT


由Interrupt Key产生,通常是CTRL+C或者DELETE。发送给所有ForeGround Group的进程


SIGIO


异步IO事件


SIGIOT


实现相关的硬件异常,一般对应SIGABRT


SIGKILL


无法处理和忽略。中止某个进程


SIGLWP


由Solaris Thread Libray内部使用


SIGPIPE


在reader中止之后写Pipe的时候发送


SIGPOLL


当某个事件发送给Pollable Device的时候发送


SIGPROF


Setitimer指定的Profiling Interval Timer所产生


SIGPWR


和系统相关。和UPS相关。


SIGQUIT


输入Quit Key的时候(CTRL+/)发送给所有Foreground Group的进程


SIGSEGV


非法内存访问


SIGSTKFLT


Linux专用,数学协处理器的栈异常


SIGSTOP


中止进程。无法处理和忽略。


SIGSYS


非法系统调用


SIGTERM


请求中止进程,kill命令缺省发送


SIGTHAW


Solaris专用,从Suspend恢复时候发送


SIGTRAP


实现相关的硬件异常。一般是调试异常


SIGTSTP


Suspend Key,一般是Ctrl+Z。发送给所有Foreground Group的进程


SIGTTIN


当Background Group的进程尝试读取Terminal的时候发送


SIGTTOU


当Background Group的进程尝试写Terminal的时候发送


SIGURG


当out-of-band data接收的时候可能发送


SIGUSR1


用户自定义signal 1


SIGUSR2


用户自定义signal 2


SIGVTALRM


setitimer函数设置的Virtual Interval Timer超时的时候


SIGWAITING


Solaris Thread Library内部实现专用


SIGWINCH


当Terminal的窗口大小改变的时候,发送给Foreground Group的所有进程


SIGXCPU


当CPU时间限制超时的时候


SIGXFSZ


进程超过文件大小限制


SIGXRES


Solaris专用,进程超过资源限制的时候发送

 

 

时间: 2025-01-21 07:03:42

《APUE》读书笔记—第十章信号(上)的相关文章

《APUE》读书笔记—第十章信号(中)

1 #include <sys/wait.h> 2 #include <unistd.h> 3 #include <sys/types.h> 4 #include <errno.h> 5 #include <signal.h> 6 #include <stdio.h> 7 #include <stdlib.h> 8 9 static void sig_quit(int signo); 10 11 int main() 12

《APUE》读书笔记—第十章信号(下)

接着昨天学习Unix信号机制,信号内容挺多了,发了两天的时间才了解各大概,日后遇到问题需要多看几遍,掌握核心应用. 7.sigaction函数 sigaction函数的功能是检查或修改与指定信号相关联的处理动作或同时执行这两种操作,可以用sigaction函数实现signal函数.函数原型及结构参数如下: int sigaction(int signum, const struct sigaction *act,struct sigaction *oldact); struct sigactio

《APUE》读书笔记-第二十章数据库函数库

本章的内容是开发一个简单的.多用户数据库的C函数库.调用此函数库提供的C语言函数,其他程序可以读取和存储数据库中的记录.绝大部分商用数据库函数库提供多进程同时更新数据库所需要的并发控制,采用建议记录锁.B+树.动态散列实现数据库. 1.函数库 开发类似ndbm函数库,增加了并发控制机制,从而允许多进程同时更新同一数据库.函数接口如下: 1 #include "apue_db.h" 2 DBHANDLE db_open(const char *pathname, int oflag, .

大家赞成出版社在JavaEye上举办“有奖书评/读书笔记征集”等活动吗?

问题描述 首先谢谢大家参加这次由JavaEye和图灵公司共同举办的问答大赛,图灵公司特精选了25种优秀的图书供大家选择,希望有您需要的. 诚邀所有参与本次问答大赛的朋友加入图灵公司在JavaEye上的圈子:http://turingbook.group.iteye.com/,支持一下我们吧. 图灵公司从8.1号开始,在JavaEye上举办了一次为期2个月的"有奖书评/读书笔记征集"活动(http://turingbook.group.iteye.com/),本次活动图灵公司一共提供了2

Qt 学习之路 2 --- 读书笔记

一.文章来由 来自豆子老师非常好的一本Qt教程,但是只有网络版,所以用这个做笔记了,不动笔墨不读书嘛~~ 二.读书笔记 1.Qt 学习之路 2(2):Qt 简介 1.1 关于 Qt 的一站式解决 Qt 是一个著名的 C++ 应用程序框架.但并不只是一个 GUI 库,因为 Qt 十分庞大,并不仅仅是 GUI 组件.使用 Qt,在一定程度上你获得的是一个"一站式"的解决方案:不再需要研究 STL,不再需要 C++ 的,不再需要到处去找解析 XML.连接数据库.访问网络的各种第三方库,因为

Android群英传笔记——第十章:Android性能优化

Android群英传笔记--第十章:Android性能优化 随着Android应用增多,功能越来越复杂,布局也越来越丰富了,而这些也成为了阻碍一个应用流畅运行,因此,对复杂的功能进行性能优化是创造高质量应用的基础,本章节将为大家展示几种性能优化的方法,帮助开发者快速的构建运行速度快,相应速度快的应用程序 布局优化 内存优化 使用各种工具进行分析,优化 一.布局优化 系统在渲染图片的时候需要消耗大量的资源,一个好的UI,不仅要有良好的视觉体验,更应该具有良好的使用体验,因此布局优化就显得很重要了

091025 L DNA读书笔记

读书笔记和读后感 02 如何开始第一个工作     大企业,有很多好处.它与小企业的不同在于,小企业的竞争是对外的,而大企业的竞争则是来自于内部的.选择进入大企业的人,一定要有一个目标,多年后做到某个位置的目标.大企业适合喜欢跟同事竞争的人工作.     小企业,坏处是没有大企业的待遇好,不过可以学会更多的本领.     政府机关,如果选择到这里工作,那就是一个比较稳定的工作.在这里,如果比别人更勤奋的话,爬得也比别人快.     自由职业,如果选择这种方式工作,那么需要人有比较高的自我管控能力

《点石成金》读书笔记:为网站增加注意力吸引点

文章描述可用性设计建议--<点石成金>读书笔记. 阅读笔记8-12章 1. WEB设计团队讨论可用性是在浪费时间 原因 1"每个人都喜欢______" 我们也是Web用户对网站上自己喜欢什么不喜欢什么有着强烈的感觉.而且由于主张的力量和人的天性自然有种把这些喜欢或不喜欢投射到整个Web用户身上的倾向. 2职位情绪 设计师通常认为大多数人喜欢视觉上看起来有趣的网站开发人员认为人们喜欢功能又多又酷的网站在建立优先级时他们在看法上的不同常引发冲突. 更大的冲突是市场文化和工程文化

深入了解JVM-----Inside JVM读书笔记

笔记   本文首先介绍一下Java虚拟机的生存周期,然后大致介绍JVM的体系结构,最后对体系结构中的各个部分进行详细介绍. (  首先这里澄清两个概念:JVM实例和JVM执行引擎实例,JVM实例对应了一个独立运行的java程序,而JVM执行引擎实例则对应了属于用户运行程序的线程:也就是JVM实例是进程级别,而执行引擎是线程级别的.) 一. JVM的生命周期 JVM实例的诞生:当启动一个Java程序时,一个JVM实例就产生了,任何一个拥有public static void main(String