1.信号又称软中断
2.信号的发送
1)一个进程发送给另一个进程(或自身)
2)内核发给进程
3.不可被捕捉、不能忽略的信号:SIGKILL、SIGSTOP
4.信号处理函数执行期间,后续递交的相同信号将被阻塞;另外还可以通过在调用sigaction函数时设置sa_mask参数的值指定其它被阻塞的信号,如,将其设置为0则表示只阻塞相同信号
5.承上,如果在阻塞期间,一个信号被阻塞了多次,在阻塞解除后,该信号只被递交一次,也就是说POSIX信号不提供排队机制
6.EINTR:如果进程阻塞于某个系统调用(如accept)时,有信号到达,且进程捕获并处理了这个信号,那么当前的系统调用将被中断(被信号中断)而返回EINTR,一般内核对于被中断的系统调用的处理是:处理完信号后重启系统调用。但是并非所有的内核都会自动重启被中断的系统调用,因此我们需要对系统调用出错返回的EINTR进行特殊处理(一般为再次调用该系统调用,以达到与内核自动重启被中断的系统调用相同的效果)。但是connect函数是一个例外,它一旦返回EINTR就不能被再次调用
7.我们把系统调用分为两类:低速系统调用和其它系统调用;被中断的系统调用一般为低速系统调用,它们是可能使进程永远阻塞的系统调用,如accept、read、write等
8.fork一个子进程时,父进程中的信号处理函数在子进程中继续有效;但是如果子进
2.信号的发送
3.不可被捕捉、不能忽略的信号:SIGKILL、SIGSTOP
4.信号处理函数执行期间,后续递交的相同信号将被阻塞;另外还可以通过在调用sigaction函数时设置sa_mask参数的值指定其它被阻塞的信号,如,将其设置为0则表示只阻塞相同信号
5.承上,如果在阻塞期间,一个信号被阻塞了多次,在阻塞解除后,该信号只被递交一次,也就是说POSIX信号不提供排队机制
6.EINTR:如果进程阻塞于某个系统调用(如accept)时,有信号到达,且进程捕获并处理了这个信号,那么当前的系统调用将被中断(被信号中断)而返回EINTR,一般内核对于被中断的系统调用的处理是:处理完信号后重启系统调用。但是并非所有的内核都会自动重启被中断的系统调用,因此我们需要对系统调用出错返回的EINTR进行特殊处理(一般为再次调用该系统调用,以达到与内核自动重启被中断的系统调用相同的效果)。但是connect函数是一个例外,它一旦返回EINTR就不能被再次调用
7.我们把系统调用分为两类:低速系统调用和其它系统调用;被中断的系统调用一般为低速系统调用,它们是可能使进程永远阻塞的系统调用,如accept、read、write等
8.fork一个子进程时,父进程中的信号处理函数在子进程中继续有效;但是如果子进