1、信号类型
Linux系统共定义了64种信号,分为两大类:可靠信号与不可靠信号,前32种信号为不可靠信号,后32种为可靠信号。
不可靠信号: 也称为非实时信号,不支持排队,信号可能会丢失, 比如发送多次相同的信号, 进程只能收到一次. 信号值取值区间为1~31;
可靠信号: 也称为实时信号,支持排队, 信号不会丢失, 发多少次, 就可以收到多少次. 信号值取值区间为32~64
SignaName Number Description
SIGHUP 1 Hangup (POSIX)//挂起
SIGINT 2 Terminal interrupt (ANSI)//中断
SIGQUIT 3 Terminal quit (POSIX)//退出
SIGILL 4 Illegal instruction (ANSI)//非法指令
SIGTRAP 5 Trace trap (POSIX)//断点或陷阱指令
SIGABRT 6 //abort发出的信号 -->SIGIOT IOT Trap (4.2 BSD)?
SIGBUS 7 BUS error (4.2 BSD)//非法内存
SIGFPE 8 Floating point exception (ANSI)//浮点异常
SIGKILL 9 Kill(can't be caught or ignored) (POSIX)//kill信号
SIGUSR1 10 User defined signal 1 (POSIX)//用户信号1
SIGSEGV 11 Invalid memory segment access (ANSI)//用户信号2
SIGUSR2 12 User defined signal 2 (POSIX)//用户信号2
SIGPIPE 13 Write on a pipe with no reader, Broken pipe (POSIX)//管道破损,没有读端的管道写数据
SIGALRM 14 Alarm clock (POSIX)//alarm发出的信号
SIGTERM 15 Termination (ANSI)//终止信号
SIGSTKFLT 16 Stack fault//栈溢出
SIGCHLD 17 Child process has stopped or exited, changed (POSIX)//子进程退出,默认忽略
SIGCONT 18 Continue executing, if stopped (POSIX)//进程继续
SIGSTOP 19 Stop executing(can't be caught or ignored) (POSIX)//进程停止
SIGTSTP 20 Terminal stop signal (POSIX)//进程停止
SIGTTIN 21 Background process trying to read, from TTY (POSIX)//进程停止,后台进程从终端读数据时
SIGTTOU 22 Background process trying to write, to TTY (POSIX)//进程停止,后台进程想终端写数据时
SIGURG 23 Urgent condition on socket (4.2 BSD)//I/O有紧急数据到达当前进程
SIGXCPU 24 CPU limit exceeded (4.2 BSD)//进程的CPU时间片到期
SIGXFSZ 25 File size limit exceeded (4.2 BSD)//文件大小的超出上限
SIGVTALRM 26 Virtual alarm clock (4.2 BSD)// 虚拟时钟超时
SIGPROF 27 Profiling alarm clock (4.2 BSD)//profile时钟超时 ps -o pid,ppid,state,tty,command
SIGWINCH 28 Window size change (4.3 BSD, Sun)//窗口大小改变
SIGIO 29 I/O now possible (4.2 BSD)//I/O相关
SIGPWR 30 Power failure restart (System V)//关机
SIGSYS 31 系统调用异常
SIGKILL(9)与SIGALRM(15)区别?
SIGSTOP 与 SIGTSTP区别?
2、信号产生
信号来源分为硬件类和软件类
-硬件方式
用户输入:比如在终端上按下组合键ctrl+C,产生SIGINT信号;
硬件异常:CPU检测到内存非法访问等异常,通知内核生成相应信号,并发送给发生事件的进程;
-软件方式
通过系统调用,发送signal信号:kill(),raise(),sigqueue(),alarm(),setitimer(),abort()
参考:
Linux信号(signal)机制 http://gityuan.com/2015/12/20/signal/
参考:
Linux信号(signal)机制 http://gityuan.com/2015/12/20/signal/