可中断的系统调用指的是进程阻塞在这个系统调用期间接受到一个信号,该系统调用会返回并返回出错信息errno=ENTER(注意:信号都是内核接收,并在系统从内核态返回到用户态的时候检查内核信号队列中是否有挂起的信号,若有则执行信号处理程序。信号中断系统调用这个现象是信号促使系统从内核态切换到用户态)。
高速系统调用不会被中断,当执行该系统调用进入内核态的时候如果此时收到一个信号,则系统调用的内核态会继续执行,并不会被中断,当系统调用的内核态执行完毕的时候才会检查如果发现有挂起信号则执行信号处理函数
可重入函数指的是这个系统调用函数在被信号中断后(中断后此时肯定从内核态返回了),指令进入信号处理程序后仍然允许在信号处理程序中调用这个系统调用而不会出错。
注意不管什么情况下,系统调用被中断后,系统调用都是已经返回的,即信号处理程序返回后都是回到用户态的指令序列