Linux的信号的分析使用

65人阅读 评论(0) 收藏 举报
分类:

一, linux的信号

 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
16) SIGSTKFLT   17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG  24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF 28) SIGWINCH    29) SIGIO   30) SIGPWR
31) SIGSYS  34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX

1, 终端按键产生信号

Ø Ctrl + c  → 2) SIGINT(终止/中断)     "INT" ----Interrupt
Ø Ctrl + \  → 3) SIGQUIT(退出)    
Ø Ctrl + z  → 20) SIGTSTP(暂停/停止)  "T" ----Terminal 终端。

2, 硬件异常产生信号

Ø 总线错误      → 7) SIGBUS
Ø 除0操作      → 8) SIGFPE (浮点数例外)    "F" -----float 浮点数。
Ø 非法访问内存  → 11) SIGSEGV (段错误)

3, Linux常规信号一览表


其中
2(SIGINT),
3(SIGQUIT),
6(SIGABRT),
9(SIGKILL),
11(SIGSEGV),
14(SIGALRM),
17(SIGCHLD),
19(SIGSTOP),
20(SIGTSTP)信号要记住

编号 信号 对应事件 默认动作
1 SIGHUP 用户退出shell时,由该shell启动的所有进程将收到这个信号 终止进程
2 SIGINT 当用户按下了组合键时,用户终端向正在运行中的由该终端启动的程序发出此信号 终止进程
3 SIGQUIT 用户按下组合键时产生该信号,用户终端向正在运行中的由该终端启动的程序发出些信号 终止进程
4 SIGILL CPU检测到某进程执行了非法指令 终止进程并产生core文件
5 SIGTRAP 该信号由断点指令或其他 trap指令产生 终止进程并产生core文件
6 SIGABRT 调用abort函数时产生该信号 终止进程并产生core文件
7 SIGBUS 非法访问内存地址,包括内存对齐出错 终止进程并产生core文件
8 SIGFPE 在发生致命的运算错误时发出。不仅包括浮点运算错误,还包括溢出及除数为0等所有的算法错误 终止进程并产生core文件
9 SIGKILL 无条件终止进程。本信号不能被忽略,处理和阻塞 终止进程,可以杀死任何进程
10 SIGUSE1 用户定义 的信号。即程序员可以在程序中定义并使用该信号 终止进程
11 SIGSEGV 指示进程进行了无效内存访问(段错误) 终止进程并产生core文件
12 SIGUSR2 另外一个用户自定义信号,程序员可以在程序中定义并使用该信号 终止进程
13 SIGPIPE Broken pipe向一个没有读端的管道写数据 终止进程
14 SIGALRM 定时器超时,超时的时间 由系统调用alarm设置 终止进程
15 SIGTERM 程序结束信号,与SIGKILL不同的是,该信号可以被阻塞和终止。通常用来要示程序正常退出。执行shell命令Kill时,缺省产生这个信号 终止进程
16 SIGSTKFLT Linux早期版本出现的信号, 现仍保留向后兼容
17 SIGCHLD 子进程结束时,父进程会收到这个信号 忽略这个信号
18 SIGCONT 如果进程已停止,则使其继续运行 继续/忽略。
19 SIGSTOP 停止进程的执行。信号不能被忽略,处理和阻塞 为终止进程
20 SIGTSTP 停止终端交互进程的运行。按下组合键时发出这个信号 暂停进程
21 SIGTTIN 后台进程读终端控制台 暂停进程
22 SIGTTOU 该信号类似于SIGTTIN,在后台进程要向终端输出数据时发生 暂停进程
23 SIGURG 套接字上有紧急数据时,向当前正在运行的进程发出些信号,报告有紧急数据到达。如网络带外数据到达 忽略该信号
24 SIGXCPU 进程执行时间超过了分配给该进程的CPU时间 ,系统产生该信号并发送给该进程 终止进程
25 SIGXFSZ 超过文件的最大长度设置 终止进程
26 SIGVTALRM 虚拟时钟超时时产生该信号。类似于SIGALRM,但是该信号只计算该进程占用CPU的使用时间 终止进程
27 SGIPROF 类似于SIGVTALRM,它不公包括该进程占用CPU时间还包括执行系统调用时间 终止进程
28 SIGWINCH 窗口变化大小时发出 忽略该信号
29 SIGIO 此信号向进程指示发出了一个异步IO事件 忽略该信号
30 SIGPWR 关机 终止进程
31 SIGSYS 无效的系统调用 终止进程并产生core文件
34~64 SIGRTMIN ~ SIGRTMAX LINUX的实时信号,它们没有固定的含义(可以由用户自定义) 终止进程

二, 注册信号signal函数的使用

函数的原型:

#include <signal.h>

       typedef void (*sighandler_t)(int);

       sighandler_t signal(int signum, sighandler_t handler);

查看评论

linux知识——64种信号产生的原因

1) SIGHUP:当用户退出shell时,由该shell启动的所有进程将收到这个信号,默认动作为终止进程 2)SIGINT:当用户按下了组合键时,用户终端向正在运行中的由该终端启动的程序发出此信号...
  • u012814689
  • u012814689
  • 2017-02-14 19:34:02
  • 418

signal(SIGIO,XXXX)实例

信号  ( signal ) 机制是 UNIX 系统中最为古老的进程间通信机制,很多条件可以产生一个信号. 信号的产生:           1,当用户按下某些按键时,产生信号. ...
  • GZFStudy
  • GZFStudy
  • 2016-06-03 14:22:31
  • 1243

信号驱动(SIGIO)的异步I/O

ocket信号驱动 第一条:概述  信号驱动IO,不是异步IO。 信号驱动IO是指:进程预先告知内核,使得 当某个socketfd有events(事件)发生时,内核使...
  • wangkaiblog
  • wangkaiblog
  • 2013-12-26 23:40:12
  • 6615

Signal and SIGIO

第一步:建立信号处理器   信号是内核传给某个进程的一个整数。当进程接收到信号,它便以以下方式之一响应:忽略该信号;让内核完成与该信号关联的默认操作;捕获该信号,即让内核将控制传...
  • anghlq
  • anghlq
  • 2010-05-28 17:05:00
  • 7766

Linux 信号机制

1、信号类型 Linux系统共定义了64种信号,分为两大类:可靠信号与不可靠信号,前32种信号为不可靠信号,后32种为可靠信号。 不可靠信号: 也称为非实时信号,不支持排队,信号可能会丢失, 比如...
  • al86866365
  • al86866365
  • 2018-04-03 10:39:23
  • 4

UNIX SIGIO信号的使用

windows平台下异步IO可以通过WSAEventSelcet来实现IO读写操作的异步通知,UNIX下也有一个类型的SIGIO信号来实现IO异步通知机制。为了验证该功能,自己做了一个 demo,发帖...
  • MSDA
  • MSDA
  • 2012-10-19 17:26:04
  • 6000

socket阻塞与非阻塞,同步与异步、I/O模型

转自:http://blog.csdn.net/hguisu/article/details/7453390 1. 概念理解      在进...
  • blackbattery
  • blackbattery
  • 2018-02-07 17:06:33
  • 105

SIGIO

异步信号模式,其他方式有多线程或者单线程阻塞 接收端:#include #include #include #include #include #include /*socket address s...
  • leamonl
  • leamonl
  • 2009-10-25 19:43:00
  • 966

Linux 进程间通信 --- 信号通信 --- signal --- signal(SIGINT, my_func); --- 按键驱动异步通知

信号  ( signal ) 机制是 UNIX 系统中最为古老的进程间通信机制,很多条件可以产生一个信号. 信号的产生:           1,当用户按下某些按键时,产生信号.    ...
  • yikai2009
  • yikai2009
  • 2013-03-06 19:58:06
  • 28550

linux下 signal信号机制的透彻分析与各种实例讲解

转自:http://blog.sina.com.cn/s/blog_636a55070101vs2d.html 转自:http://blog.csdn.net/tiany524/article/...
  • u012183924
  • u012183924
  • 2016-12-26 20:24:58
  • 2827
    个人资料
    持之以恒
    等级:
    访问量: 2万+
    积分: 1335
    排名: 3万+
    最新评论