linux学习阙疑"/>
linux学习阙疑
早期UNIX系统的一个特性是:如果进程在执行一个低速系统调用而阻塞期间捕捉到一个信号,则该系统调用就被
中断不再继续执行。该系统调用返回出错,其errno设置为EINTR。这样处理是因为一个信号发生了,进程捕捉
到它,这意味着已经发生了某种事情,所以是个好机会应当唤醒阻塞的系统调用。
前面一句说当捕捉到一个信号时系统调用被中断不再继续执行,后面为什么又说是一个好机会应当唤醒阻塞的系统调用?
之前我对于"唤醒阻塞的系统调用"理解有问题.我以为所谓的被唤醒指的是该系统调用从阻塞状态变为正常执行状态.
当一个系统调用被阻塞时,如果中断到来,转到中断处理函数中执行,执行完之后,该系统调用继续阻塞呢还是出错返回呢?
如果继续阻塞,那么该阻塞状态并没有被唤醒,如果出错返回,则它已经退出了阻塞状态.出错返回也是被唤醒的一种形式.
更多推荐
linux学习阙疑
发布评论