Linux 信号机制

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/

猜你喜欢

转载自blog.csdn.net/al86866365/article/details/79799738
今日推荐