信号简介
1.信号由[内核]产生发送的
软中断信号(signal,又简称为信号)用来通知进程发生了异步事件。进程之间可以互相通过系统调用kill发送软中断信号。内核也可以因为内部事件而给进程发送信号,通知进程发生了某个事件。
2.信号的状态
产生
未决:未处理,等待被进程处理
递达:已经处理
3.信号处理方式
忽略;捕捉;执行了默认的操作
4.查看信号的默认动作以及信号的含义:man 7 signal
Term 终止
Ign 忽略
Core 终止后,产生core文件,用于调试
Stop 暂停
Cont 继续执行
5.常见信号kill -l
注意:有两个信号不能被忽略,不能被捕获:SIGKILL(9号信号)和SIGSTOP。
SIGABRT 进程非正常终止, 可能来自 abort(3)
SIGALRM 警告钟
SIGUP 系统挂掉
SIGINT 终端ctrl+C
SIGQUIT 终端退出ctrl+
SIGTERM 终止
SIGKILL 杀死进程信号
SIGPIPE 向没有读者的管道写入数据
SIGSEGV 段错误:无效内存段访问
SIGUSR1 用户自定义信号1
SIGUSR2 用户自定义信号2
SIGCHLD 子进程停止
可靠信号(实时信号)和不可靠信号(不实时信号)
哪些是可靠/不可靠信号?
[1]实时信号都是可靠信号(支持排队);不实时信号都是不可靠信号(不支持排队)
[2]kill -l的前31个信号,都是不可靠信号;后面的都是可靠信号
定义:
不可靠信号:指向应用程序发送了3次信号,而应用程序只接收到1次信号
可靠信号:指向应用程序发送了3次信号,有下面两种情况保证信号可靠:
(1) 应用程序收到3次信号
(2) 即使没收到3次信号:假设收到1次信号,则会告诉应用程序还有2此信号没收到
不可靠信号存在的缺点:信号可能丢失
可靠信号是[有序的][支持排队]:先注册的信号,先执行