Unix环境高级编程(九)信号
信号时软中断,很多比较重要的应用程序都需要处理信号,信号提供了一种处理异步事件的方法。每个信号都一个名字,以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专用,进程超过资源限制的时候发送 |
Unix环境高级编程(九)信号的更多相关文章
- UNIX环境高级编程--10. 信号
第十章 信号 信号是软中断,提供了一种处理异步事件的方法.例如,终端用户键入终端键,会通过信号机制停止一个进程,或及早终止管道中的下一个程序. 每个信号都有一个名字,SIG开 ...
- UNIX环境高级编程——可靠信号与不可靠信号
在早期的UNIX中信号是不可靠的,不可靠在这里指的是:信号可能丢失,一个信号发生了,但进程却可能一直不知道这一点. 现在Linux 在SIGRTMIN实时信号之前的都叫不可靠信号,这里的不可靠主要是不 ...
- Unix环境高级编程(十)信号续
1.signal函数 Unix系统的信号机制最简单的接口是signal函数,函数原型如下: #include <signal.h> typedef void (*sighandler_t) ...
- (八) 一起学 Unix 环境高级编程 (APUE) 之 信号
. . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...
- (九) 一起学 Unix 环境高级编程 (APUE) 之 线程
. . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...
- (十三) [终篇] 一起学 Unix 环境高级编程 (APUE) 之 网络 IPC:套接字
. . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...
- (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO
. . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...
- (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO
. . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...
- (三) 一起学 Unix 环境高级编程 (APUE) 之 文件和目录
. . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...
随机推荐
- Simplify Path leetcode java
题目: Given an absolute path for a file (Unix-style), simplify it. For example, path = "/home/&qu ...
- svn报错can only be performed on a version resource [at this time].
报错 can only be performed on a version resource [at this time]. 有的文件能提交,有的文件不能提交 猜想:是不是因为缓存问题方法:tea ...
- 邮件发送(C#)
using System;using System.Collections.Generic;using System.Text;using System.Net.Mail;using System.N ...
- 修改linux的文件时,如何快速找到要修改的内容并修改
修改linux系统下的文件时,如果文件内容很多,不容易找到需要修改的内容,下面详细介绍linux系统下如何快速修改文件. 工具/原料 linux系统 方法/步骤 在linux系统下,找到需 ...
- 【Window OS】”对于目标文件系统,文件XXXXX过大“导致无法进行文件操作的解决方法
问题原因:这是目标文件系统不支持这么大的文件的操作问题.例如:目标文件系统的格式是FAT32,FAT32最大支持4G,如果你要进行发送或粘贴4G以上的文件就会出现这个问题. 解决办法:把目标文件系统的 ...
- U盘去保护方法
一.基本信息 U盘大小是16G的,估计用了2G的空间存储,没有任何开关设置,格式化或写入时提示被写保护: U盘放到任何一台电脑上都是只能读不能写,说明与电脑无关,用了各种U盘修复程序都无效: 二.一般 ...
- Hibernate(十四)缓存
一.什么是缓存 缓存是介于应用程序和永久必数据存储源之间,目的是为了降低应用程序直接读写永久必数据存储源的频率,从而提高运行性能 缓存通常是在内存中的如: Office中的Word.excel Hib ...
- jquery插件开发通用框架
2017-07-24 更新:增加单例模式. jquery插件开发框架代码: /* * 插件编写说明: * 1.插件命名:jquery.[插件名].js,如jquery.plugin.js * 2.对象 ...
- ORACLE-SQL(二)
CreateTime--2017年6月1日14:36:37 Author:Marydon 一.SQL语句 (二)提升篇 1.2.3 分页,分组,计数,排序 /** * 返回数据 * FORGID ...
- windows上安装db2 spatial extender和ArcSDE的问题
因客户的DB2版本是9.7的版本,所以测试环境也只能安装这个版本,但在ArcSDE的最小支持版本里至少需要V9.7 pack 4的版本,低于这个版本是不行的. 安装DB2和spatial extend ...