Unix Signals

Unix Signals

SIGHUP

1

Exit

Hangup 如果终端界面检测到一个连接断开,则将此信号送给与该终端相关的控制进程(对话期首进程)。此信号被送给

session 结构中s_leader 字段所指向的进程。仅当终端的

CLOCAL 标志没有设置时,在上述条件下才产生此信号。(如果所连接的终端是本地的,才设置该终端的CLOCAL 标志。它告诉终端驱动程序忽略所有调制解调器的状态行。注意,接到此信号的对话期首进程可能在后台。

SIGINT

2

Exit

Interrupt 当用户按中断键(一般采用DELETECtrl-C )时,终端驱动程序产生此信号并送至前台进程组中的每一个进程。当一个进程在运行时失控,特别是它正在屏幕上产生大量不需要的输出时,常用此信号终止它。

SIGQUIT

3

Core

Quit 当用户在终端上按退出键(一般采用Ctrl-/ )时,产生此信号,并送至前台进程组中的所有进程。此信号不仅终止前台进程组(如SIGINT 所做的那样),同时产生一个core 文件。

SIGILL

4

Core

Illegal Instruction

SIGTRAP

5

Core

Trace/Breakpoint Trap 指示一个实现定义的硬件故障。

SIGABRT

6

Core

Abort 进程异常终止

SIGEMT

7

Core

Emulation Trap 指示一个实现定义的硬件故障。

SIGFPE

8

Core

Arithmetic Exception 此信号表示一个算术运算异常,例如除以0 ,浮点溢出等。

SIGKILL

9

Exit

Killed 这是两个不能被捕捉或忽略信号中的一个。它向系统管理员提供了一种可以杀死任一进程的可靠方法。

SIGBUS

10

Core

Bus Error 指示一个实现定义的硬件故障

SIGSEGV

11

Core

Segmentation Fault 指示进程进行了一次无效的存储访问。

SIGSYS

12

Core

Bad System Call 指示一个无效的系统调用。由于某种未知原因,进程执行了一条系统调用指令,但其指示系统调用类型的参数却是无效的。

SIGPIPE

13

Exit

Broken Pipe 如果在读进程已终止时写管道,则产生此信号。当套接口的一端已经终止时,若进程写该套接口也产生此信号。

SIGALRM

14

Exit

Alarm Clock 超过用alarm 函数设置的时间时产生

SIGTERM

15

Exit

Terminated 这是由kill(1) 命令发送的系统默认终止信号。

SIGUSR1

16

Exit

User Signal 1 这是一个用户定义的信号,可用于应用程序。

SIGUSR2

17

Exit

User Signal 2 这是一个用户定义的信号,可用于应用程序。

SIGCHLD

18

Ignore

Child Status 在一个进程终止或停止时,SIGCHLD 信号被送给其父进程。系统默认,忽略此信号。如果父进程希望了解其子进程的这种状态改变,则应捕捉此信号。信号捕捉函数

中通常要调用w a i t 函数以取得子进程I D 和其终止状态。

SIGPWR

19

Ignore

Power Fail/Restart 这是一种SVR4 信号,它依赖于系统。它主要用于具有不间断电源(UPS) 的系统上。如果电源失效,则UPS 起作用,而且通常软件会接到通知。在这种情况下,系统依靠蓄电池电源继续运行,所以无须作任何处理。但是如果蓄电池也将不能支持工作,则软件通常会再次接到通知,此时,它在1530 秒内使系统各部分都停止运行。此时应当传递

SIGPWR 信号。在大多数系统中使接到蓄电池电压过低的进程将信号SIGPWR 发送给init 进程,然后由init 处理停机操作。很多系统Vinit 实现在inittab 文件中提供了两个记录项用于此种目的;powerfail 以及powerwait

SIGWINCH

20

Ignore

Window Size Change SVR4 4.3 + BSD 内核保持与每个终端或伪终端相关联的窗口的大小。一个进程可以用ioctl 函数得到或设置窗口的大小。如果一个进程用 ioctl 的设置- 窗口- 大小命令更改了窗口大小,则内核将SIGWINCH 信号送至前台进程组。

SIGURG

21

Ignore

Urgent Socket Condition 此信号通知进程已经发生一个紧急情况。在网络连接上,接到非规定波特率的

数据时,此信号可选择地产生。

SIGPOLL

22

Ignore

Socket I/O Possible 这是一种SVR4 信号,当在一个可轮询设备上发生一特定事件时产生此信号。它与4.3+BSDSIGIOSIGURG 信号接近。

SIGSTOP

23

Stop

Stopped (signal) 这是一个作业控制信号,它停止一个进程。它类似于交互停止信号(SIGTSTP) ,但是SIGSTOP 不能被捕捉或忽略。

SIGTSTP

24

Stop

Stopped (user) 交互停止信号,当用户在终端上按挂起键 (一般采用Ctrl-Z )时,终端驱动程序产生此信号。

SIGCONT

25

Ignore

Continued 此作业控制信号送给需要继续运行的处于停止状态的进程。如果接收到此信号的进程处于停止状态,则系统默认动作是使该进程继续运行,否则默认动作是忽略此信号

SIGTTIN

26

Stop

Stopped (tty input) 当一个后台进程组进程试图读其控制终端时,终端驱动程序产生此信号。在下列例外情形下不产生此信号,此时读操作返回出错, errno 设置为EIO(a) 读进程忽略或阻塞此信号,或(b) 读进程所属的进程组是孤儿进程组。

SIGTTOU

27

Stop

Stopped (tty output) 当一个后台进程组进程试图写其控制终端时产生此信号。与上面所述的SIGTTIN 信号不同,一个进程可以选择为允许后台进程写控制终端。如果不允许后台进程写,则与SIGTTIN 相似也有两种特殊情况:(a ) 写进程忽略或阻塞此信号,或(b) 写进程所属进程组是孤儿进程组。在这两种情况下不产生此信号,写操作返回出错,errno 设置为EIO

不论是否允许后台进程写,某些除写以外的下列终端操作也能产生此信号: tcsetattr,tcsendbreak, tcdrain, tcflush, tcflow 以及tcsetpgrp

SIGVTALRM

28

Exit

Virtual Timer Expired 当一个由setitimer(2) 函数设置的虚拟间隔时间已经超过时产生此信号。

SIGPROF

29

Exit

Profiling Timer Expired setitimer(2) 函数设置的梗概统计间隔时间已经超过时产生此信号。

SIGXCPU

30

Core

CPU time limit exceeded SVR4 4.3+BSD 支持资源限制的概念。如果进程超过了其软CPU 时间限制,则产生此信号。

SIGXFSZ

31

Core

File size limit exceeded 如果进程超过了其软文件长度限制,则SVR44.3+BSD 产生此信号。

SIGWAITING

32

Ignore

All LWPs blocked

SIGLWP

33

Ignore

Virtual Interprocessor Interrupt for Threads Library

SIGAIO

34

Ignore

Asynchronous I/O 此信号指示一个异步I/O 事件。

 

 

你可能感兴趣的:(Unix Signals)