APUE学习笔记——10 信号
信号的基本概念
产生信号的几种方式
处理信号的几种方式:
可靠信号与不可靠信号
——不支持排队,为普通信号。(不能用于统计信号发生次数的情景。)
不可靠信号
缺陷一:
int sig_int(); /* my signal handling function */
...
signal(SIGINT, sig_int); /* @1establish handler */
...
sig_int()
{
signal(SIGINT, sig_int); /* @2reestablish handler for next time */
...
./*process the signal ... */
...
}
缺陷二:
int sig_int(); /* my signal handling function */
int sig_int_flag; /* set nonzero when signal occurs */
main()
{
signal(SIGINT, sig_int); /* establish handler */
...
while (sig_int_flag == 0)
pause(); /* go to sleep, waiting for signal */
...
}
sig_int()
{
signal(SIGINT, sig_int); /* reestablish handler for next time */
sig_int_flag = 1; /* set flag for main loop to examine */
}
可靠信号:
解决不可靠信号缺陷一
解决不可靠信号缺陷二:
信号列表:
|
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专用,进程超过资源限制的时候发送
|
APUE学习笔记——10 信号的更多相关文章
- APUE学习笔记——10信号——信号接口函数 signal 和 sigaction
signal函数 signal函数是早起Unix系统的信号接口,早期系统中提供不可靠的信号机制.在后来的分支中,部分系统使用原来的不可靠机制定义signal函数,如 Solaris 10 .而 ...
- APUE学习笔记——10.9 信号发送函数kill、 raise、alarm、pause
转载注明出处:Windeal学习笔记 kil和raise kill()用来向进程或进程组发送信号 raise()用来向自身进程发送信号. #include <signal.h> int k ...
- APUE学习笔记——10.11~10.13 信号集、信号屏蔽字、未决信号
如有转载,请注明出处:Windeal专栏 首先简述下几个概念的关系: 我们通过信号集建立信号屏蔽字,使得信号发生阻塞,被阻塞的信号即未决信号. 信号集: 信号集:其实就是一系列的信号.用sigset_ ...
- APUE学习笔记——10.可靠信号与不可靠信号
首先说明:现在大部分Unix系系统如Linux都已经实现可靠信号. 1~31信号与SIGRTMIN-SIGRTMAX之间并不是可靠信号与不可靠信号的区别,在大多数系统下他们都是可靠信号. 只不过: 1 ...
- APUE学习笔记——10.18 system函数 与waitpid
system函数 system函数用方便在一个进程中执行命令行(一行shell命令). 用法如下: #include <stdio.h> #include <stdlib.h> ...
- APUE学习笔记——10.15 sigsetjmp和siglongjmp
转载自:sigsetjmp使用方法 如侵犯您的权益,请联系:windeal12@qq.com sigsetjmp使用方法 分类: c/c++ linux2012-02-03 12:33 1252人阅读 ...
- APUE 学习笔记(七) 信号
1.信号是软件中断,提供一种异步处理事件的方法 很多事件产生信号: (1)用户按下某些中断键,如 Ctrl + C键产生 SIGINT信号 (2)硬件异常产生信号,比如 除数为0,无效的内存引用 ( ...
- APUE学习笔记5——信号、信号集和进程信号屏蔽字
1 信号传递过程 当引发信号的事件发生时(如软硬件异常.软件定时.终端产生信号或调用kill函数等等),会产生信号,内核会发送给目标进程. 在信号产生到信号传递给目标进程之间的时间间隔内,称该信号为未 ...
- thinkphp学习笔记10—看不懂的路由规则
原文:thinkphp学习笔记10-看不懂的路由规则 路由这部分貌似在实际工作中没有怎么设计过,只是在用默认的设置,在手册里面看到部分,艰涩难懂. 1.路由定义 要使用路由功能需要支持PATH_INF ...
随机推荐
- 使用selenium前学习HTML(3)— 属性
<!-- HTML标签可以拥有属性,属性提供元素的更多的信息: 属性总是以名称/值对的形式出现,比如:name="value". 属性总是在 HTML 元素的开始标签中规定. ...
- 摄像头PIN脚功能作用
摄像头PIN脚功能作用,Camera硬件系统分析 9 f E+ E2 b N. j4 M2 U- a. q9 A) T# c& O& C% x+ l5 l! q ...
- 前端学习笔记之Z-index详解
CSS当中的z-index属性看起来足够简单,但是如果你真的想了解它是如何工作的话,在这简单的表面之下,又有许多值得探究的内容. 在这篇教程中,通过探究层叠上下文和一系列实际的例子,我们将会阐明z-i ...
- Python面试题之列表推导式
题目要求: 生成如下列表 [[0,0,0,0,0,],[0,1,2,3,4,],[0,2,4,6,8,],[0,3,6,9,12,]] (考察列表生成式和基本逻辑推理) 方法1: list1 = [] ...
- Zstack中任务,事件,消息之间的关系
Zstack是Zigbee协议的具体实现,在实现的过程中为了能够更好的对各个模块和功能进行管理,所以加入了OSAL(Operating System Abstraction Layer 操作系统抽象层 ...
- 三20135320赵瀚青LINUX内核分析第二周学习笔记
赵瀚青原创作品转载请注明出处<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.计算机的三个法宝 存储程 ...
- 【前端】vue.js实现输入框绑定
vue.js实现输入框绑定 实现效果如下: 实现代码及注释 <!DOCTYPE html> <html> <head> <title>vue.js数据动 ...
- LeetCode——4Sum
1. Question Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + ...
- 转载 - POJ分类很好很有层次感
from http://blog.csdn.net/zzycsx/article/details/49103451 OJ上的一些水题(可用来练手和增加自信) (poj3299,poj2159,poj2 ...
- Sorl初始
Sorl是什么 ? Solr是Apache下的一个开源项目,使用Java基于Lucene开发的全文检索服务:是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口.用户可 ...