一. 信号是一种软中断,
中断分为硬中端和软中断,软中断是来自其他程序的中断,硬中断是来自硬件设备的中断
二.常见的信号
SIGINT,SIGCONT,SIGALRM,SIGSTOP,SIGTSTP,SIGABRT,SIGKILL,SIGQUIT,SIGCHLD
三.信号分为不可靠信号和可靠信号
编号小于34的是不可靠信号,不支持排队,无论发送多少信号,程序只执行一次,信号会丢失
编号大于34小于64属于可靠信号,支持排队,排队等候处理
无论是可靠信号还是不可靠信号,都通过kill发送信号
四.信号的捕获与处理
通过signal函数进行注册,函数只执行一次,如果想一直处理,可以在函数结束时,再次申请注册signal
五.子进程信号的处理
通过fork创建的子进程是跟父进程一样的信号处理方式
但是vfork不一样,子进程与父进程不一样的信号处理方式
六.
sleep pause,alarm
七.
信号集与信号屏蔽
什么是信号集:信号的集合sigset_t,由128个二进制组成,每一个二进制
代表一个集合
为什么要设置进程信号屏蔽:当执行一些敏感操作时不希望被一些信号打扰,但有不希望
信号丢失(忽略),可以先吧信号屏蔽了让信号处于未决状态(信号一惊产生但是内核还没法给相应的进程)
等把事情处理完再解除屏蔽,未决的信号就会达到西施再处理,忽略,终止
int sigpending(sigset_t *set)
功能:获取未决状态的信号,可以在解除信号屏蔽前预先查找有那写未决状态的信号