低速系统调用是可能使进程永远阻塞的一类系统调用,例如read。当不希望进程被这类调用永远阻塞的时候,可以用信号来中断它,当信号处理函数返回的时候,那么这类调用还会回到被中断的指令行吗?有些可以,有些不可以。《apue》列出了所有可以自动重启的系统调用。
那么当一个信号的信号处理函数被其他信号中断的时候还可以再回到被中断处吗?答案是肯定的。而且就算设定了SA_INTERRUPT标志也还是能回到被中断信号处理函数中的被中断处。我觉得肯定有办法让信号处理函数被中断后就不再重启,至于究竟怎么做,有待探究!