经常使用SIG信号及其键值

01 SIGHUP 挂起(hangup)
02 SIGINT 中断,当用户从键盘按^c键或^break键时
03 SIGQUIT 退出,当用户从键盘按quit键时
04 SIGILL 非法指令
05 SIGTRAP 跟踪陷阱(trace trap),启动进程,跟踪代码的执行
06 SIGIOT IOT指令
07 SIGEMT EMT指令
08 SIGFPE 浮点运算溢出
09 SIGKILL 杀死、终止进程 
10 SIGBUS 总线错误
11 SIGSEGV 段违例(segmentation  violation),进程试图去访问其虚地址空间之外的位置
12 SIGSYS 系统调用中参数错,如系统调用号非法
13 SIGPIPE 向某个非读管道中写入数据
14 SIGALRM 闹钟。当某进程但愿在某时间后接收信号时发此信号
15 SIGTERM 软件终止(software  termination)
16 SIGUSR1 用户自定义信号1
17 SIGUSR2 用户自定义信号2
18 SIGCLD 某个子进程死
19 SIGPWR 电源故障shell

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 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 ~ 31的信号为传统UNIX支持的信号,是不可靠信号(非实时的),编号为32 ~ 63的信号是后来扩充的,称作可靠信号(实时信号)。不可靠信号和可靠信号的区别在于前者不支持排队,可能会形成信号丢失,然后者不会。 
下面咱们对编号小于SIGRTMIN的信号进行讨论。 
1) SIGHUP 
本信号在用户终端链接(正常或非正常)结束时发出, 一般是在终端的控制进程结束时, 通知同一session内的各个做业, 这时它们与控制终端再也不关联。 
登陆Linux时,系统会分配给登陆用户一个终端(Session)。在这个终端运行的全部程序,包括前台进程组和后台进程组,通常都属于这个 Session。当用户退出Linux登陆时,前台进程组和后台有对终端输出的进程将会收到SIGHUP信号。这个信号的默认操做为终止进程,所以前台进 程组和后台有终端输出的进程就会停止。不过能够捕获这个信号,好比wget能捕获SIGHUP信号,并忽略它,这样就算退出了Linux登陆,wget也 能继续下载。 
此外,对于与终端脱离关系的守护进程,这个信号用于通知它从新读取配置文件。 
2) SIGINT 
程序终止(interrupt)信号, 在用户键入INTR字符(一般是Ctrl-C)时发出,用于通知前台进程组终止进程。 
3) SIGQUIT 
和SIGINT相似, 但由QUIT字符(一般是Ctrl-)来控制. 进程在因收到SIGQUIT退出时会产生core文件, 在这个意义上相似于一个程序错误信号。 
4) SIGILL 
执行了非法指令. 一般是由于可执行文件自己出现错误, 或者试图执行数据段. 堆栈溢出时也有可能产生这个信号。 
5) SIGTRAP 
由断点指令或其它trap指令产生. 由debugger使用。 
6) SIGABRT 
调用abort函数生成的信号。 
7) SIGBUS 
非法地址, 包括内存地址对齐(alignment)出错。好比访问一个四个字长的整数, 但其地址不是4的倍数。它与SIGSEGV的区别在于后者是因为对合法存储地址的非法访问触发的(如访问不属于本身存储空间或只读存储空间)。 
8) SIGFPE 
在发生致命的算术运算错误时发出. 不只包括浮点运算错误, 还包括溢出及除数为0等其它全部的算术的错误。 
9) SIGKILL 
用来当即结束程序的运行. 本信号不能被阻塞、处理和忽略。若是管理员发现某个进程终止不了,可尝试发送这个信号。 
10) SIGUSR1 
留给用户使用 
11) SIGSEGV 
试图访问未分配给本身的内存, 或试图往没有写权限的内存地址写数据. 
12) SIGUSR2 
留给用户使用 
13) SIGPIPE 
管道破裂。这个信号一般在进程间通讯产生,好比采用FIFO(管道)通讯的两个进程,读管道没打开或者意外终止就往管道写,写进程会收到SIGPIPE信号。此外用Socket通讯的两个进程,写进程在写Socket的时候,读进程已经终止。 
14) SIGALRM 
时钟定时信号, 计算的是实际的时间或时钟时间. alarm函数使用该信号. 
15) SIGTERM 
程序结束(terminate)信号, 与SIGKILL不一样的是该信号能够被阻塞和处理。一般用来要求程序本身正常退出,shell命令kill缺省产生这个信号。若是进程终止不了,咱们才会尝试SIGKILL。 
17) SIGCHLD 
子进程结束时, 父进程会收到这个信号。 
若是父进程没有处理这个信号,也没有等待(wait)子进程,子进程虽然终止,可是还会在内核进程表中占有表项,这时的子进程称为僵尸进程。这种情 况咱们应该避免(父进程或者忽略SIGCHILD信号,或者捕捉它,或者wait它派生的子进程,或者父进程先终止,这时子进程的终止自动由init进程 来接管)。 
18) SIGCONT 
让一个中止(stopped)的进程继续执行. 本信号不能被阻塞. 能够用一个handler来让程序在由stopped状态变为继续执行时完成特定的工做. 例如, 从新显示提示符 
19) SIGSTOP 
中止(stopped)进程的执行. 注意它和terminate以及interrupt的区别:该进程还未结束, 只是暂停执行. 本信号不能被阻塞, 处理或忽略. 
20) SIGTSTP 
中止进程的运行, 但该信号能够被处理和忽略. 用户键入SUSP字符时(一般是Ctrl-Z)发出这个信号 
21) SIGTTIN 
当后台做业要从用户终端读数据时, 该做业中的全部进程会收到SIGTTIN信号. 缺省时这些进程会中止执行. 
22) SIGTTOU 
相似于SIGTTIN, 但在写终端(或修改终端模式)时收到. 
23) SIGURG 
有”紧急”数据或out-of-band数据到达socket时产生. 
24) SIGXCPU 
超过CPU时间资源限制. 这个限制能够由getrlimit/setrlimit来读取/改变。 
25) SIGXFSZ 
当进程企图扩大文件以致于超过文件大小资源限制。 
26) SIGVTALRM 
虚拟时钟信号. 相似于SIGALRM, 可是计算的是该进程占用的CPU时间. 
27) SIGPROF 
相似于SIGALRM/SIGVTALRM, 但包括该进程用的CPU时间以及系统调用的时间. 
28) SIGWINCH 
窗口大小改变时发出. 
29) SIGIO 
文件描述符准备就绪, 能够开始进行输入/输出操做. 
30) SIGPWR 
Power failure 
31) SIGSYS 
非法的系统调用。 
在以上列出的信号中,程序不可捕获、阻塞或忽略的信号有:SIGKILL,SIGSTOP 
不能恢复至默认动做的信号有:SIGILL,SIGTRAP 
默认会致使进程流产的信号有:SIGABRT,SIGBUS,SIGFPE,SIGILL,SIGIOT,SIGQUIT,SIGSEGV,SIGTRAP,SIGXCPU,SIGXFSZ 
默认会致使进程退出的信号有:SIGALRM,SIGHUP,SIGINT,SIGKILL,SIGPIPE,SIGPOLL,SIGPROF,SIGSYS,SIGTERM,SIGUSR1,SIGUSR2,SIGVTALRM 
默认会致使进程中止的信号有:SIGSTOP,SIGTSTP,SIGTTIN,SIGTTOU 
默认进程忽略的信号有:SIGCHLD,SIGPWR,SIGURG,SIGWINCH 
此外,SIGIO在SVR4是退出,在4.3BSD中是忽略;SIGCONT在进程挂起时是继续,不然是忽略,不能被阻塞。session

如下是其它网友的补充:socket

SIGHUP 终止进程 终端线路挂断 
SIGINT 终止进程 中断进程 
SIGQUIT 创建CORE文件终止进程,而且生成core文件 
SIGILL 创建CORE文件 非法指令 
SIGTRAP 创建CORE文件 跟踪自陷 
SIGBUS 创建CORE文件 总线错误 
SIGSEGV 创建CORE文件 段非法错误 
SIGFPE 创建CORE文件 浮点异常 
SIGIOT 创建CORE文件 执行I/O自陷 
SIGKILL 终止进程 杀死进程 
SIGPIPE 终止进程 向一个没有读进程的管道写数据 
SIGALARM 终止进程 计时器到时 
SIGTERM 终止进程 软件终止信号 
SIGSTOP 中止进程 非终端来的中止信号 
SIGTSTP 中止进程 终端来的中止信号 
SIGCONT 忽略信号 继续执行一个中止的进程 
SIGURG 忽略信号 I/O紧急信号 
SIGIO 忽略信号 描述符上能够进行I/O 
SIGCHLD 忽略信号 当子进程中止或退出时通知父进程 
SIGTTOU 中止进程 后台进程写终端 
SIGTTIN 中止进程 后台进程读终端 
SIGXGPU 终止进程 CPU时限超时 
SIGXFSZ 终止进程 文件长度过长 
SIGWINCH 忽略信号 窗口大小发生变化 
SIGPROF 终止进程 统计分布图用计时器到时 
SIGUSR1 终止进程 用户定义信号1 
SIGUSR2 终止进程 用户定义信号2 
SIGVTALRM 终止进程 虚拟计时器到时 
1) SIGHUP 本信号在用户终端链接(正常或非正常)结束时发出, 一般是在终端的控 
制进程结束时, 通知同一session内的各个做业, 这时它们与控制终端 
再也不关联. 
2) SIGINT 程序终止(interrupt)信号, 在用户键入INTR字符(一般是Ctrl-C)时发出 
3) SIGQUIT 和SIGINT相似, 但由QUIT字符(一般是Ctrl-)来控制. 进程在因收到 
SIGQUIT退出时会产生core文件, 在这个意义上相似于一个程序错误信 
号. 
4) SIGILL 执行了非法指令. 一般是由于可执行文件自己出现错误, 或者试图执行 
数据段. 堆栈溢出时也有可能产生这个信号. 
5) SIGTRAP 由断点指令或其它trap指令产生. 由debugger使用. 
6) SIGABRT 程序本身发现错误并调用abort时产生. 
6) SIGIOT 在PDP-11上由iot指令产生, 在其它机器上和SIGABRT同样. 
7) SIGBUS 非法地址, 包括内存地址对齐(alignment)出错. eg: 访问一个四个字长 
的整数, 但其地址不是4的倍数. 
8) SIGFPE 在发生致命的算术运算错误时发出. 不只包括浮点运算错误, 还包括溢 
出及除数为0等其它全部的算术的错误. 
9) SIGKILL 用来当即结束程序的运行. 本信号不能被阻塞, 处理和忽略. 
10) SIGUSR1 留给用户使用 
11) SIGSEGV 试图访问未分配给本身的内存, 或试图往没有写权限的内存地址写数据. 
12) SIGUSR2 留给用户使用 
13) SIGPIPE Broken pipe 
14) SIGALRM 时钟定时信号, 计算的是实际的时间或时钟时间. alarm函数使用该 
信号. 
15) SIGTERM 程序结束(terminate)信号, 与SIGKILL不一样的是该信号能够被阻塞和 
处理. 一般用来要求程序本身正常退出. shell命令kill缺省产生这 
个信号. 
17) SIGCHLD 子进程结束时, 父进程会收到这个信号. 
18) SIGCONT 让一个中止(stopped)的进程继续执行. 本信号不能被阻塞. 能够用 
一个handler来让程序在由stopped状态变为继续执行时完成特定的 
工做. 例如, 从新显示提示符 
19) SIGSTOP 中止(stopped)进程的执行. 注意它和terminate以及interrupt的区别: 
该进程还未结束, 只是暂停执行. 本信号不能被阻塞, 处理或忽略. 
20) SIGTSTP 中止进程的运行, 但该信号能够被处理和忽略. 用户键入SUSP字符时 
(一般是Ctrl-Z)发出这个信号 
21) SIGTTIN 当后台做业要从用户终端读数据时, 该做业中的全部进程会收到SIGTTIN 
信号. 缺省时这些进程会中止执行. 
22) SIGTTOU 相似于SIGTTIN, 但在写终端(或修改终端模式)时收到. 
23) SIGURG 有”紧急”数据或out-of-band数据到达socket时产生. 
24) SIGXCPU 超过CPU时间资源限制. 这个限制能够由getrlimit/setrlimit来读取/ 
改变 
25) SIGXFSZ 超过文件大小资源限制. 
26) SIGVTALRM 虚拟时钟信号. 相似于SIGALRM, 可是计算的是该进程占用的CPU时间. 
27) SIGPROF 相似于SIGALRM/SIGVTALRM, 但包括该进程用的CPU时间以及系统调用的 
时间. 
28) SIGWINCH 窗口大小改变时发出. 
29) SIGIO 文件描述符准备就绪, 能够开始进行输入/输出操做. 
30) SIGPWR Power failure 
有 两个信号能够中止进程:SIGTERM和SIGKILL。 SIGTERM比较友好,进程能捕捉这个信号,根据您的须要来关闭程序。在关闭程序以前,您能够结束打开的记录文件和完成正在作的任务。在某些状况下,假 如进程正在进行做业并且不能中断,那么进程能够忽略这个SIGTERM信号。 
对于SIGKILL信号,进程是不能忽略的。这是一个 “我无论您在作什么,马上中止”的信号。假如您发送SIGKILL信号给进程,Linux就将进程中止在那里函数

相关文章
相关标签/搜索