首页 > 代码库 > Linux C 程序 信号及信号的处理(19)
Linux C 程序 信号及信号的处理(19)
信号及信号的处理
1.Linux信号的介绍
信号是一种软件中断。Linux系统中根据POSIX标准扩展的信号机制。
1.信号来源
1.硬件方式
1.当用户按下某个键,产生信号,如crtl+c
2.硬件异常产生信号,除数为0,无效的存储访问等
2.软件方式
1.用户调用kill命令向进程发送任意信号
2.进程调用kill或sigqueue函数发送信号
3.检测某种软件条件已经具备发出信号条件,如alarm设置的定时器
2.信号的种类
linux 下命令 kill -l 列出所支持的全部信号
[fubin@localhost C]$ 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
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
信号的值在signal.h里定义
1.可靠信号和不可靠信号
SIGHUP(1号) ----SIGSYS(31号) 继承自UNIX,是不可靠信号
Liunx根据POSIX标准定义的:SIGRTMIN(33号)------SIGRTMAX(64号) 可靠信号,也叫做实时信号
Linux没有16号和32号信号
信号的可靠性指:信号是否会丢失,或者说信号是否支持排队。
信号产生和递送有一个时间间隔,称作信号未决。
信号会递送多次,可靠信号
只递送一次,不可靠信号
2.信号优先级
编号越小先被递送,不可靠信号先被递送
3.进程对信号的响应
1.捕捉信号
2.忽略信号
3.按系统默认方式处理 :通常的默认操作是终止进程
2.信号处理
1.信号的捕捉和处理
2.信号处理函数的返回
3.信号的发送
4.信号的屏蔽
Linux C 程序 信号及信号的处理(19)