linux学习阙疑

早期UNIX系统的一个特性是:如果进程在执行一个低速系统调用而阻塞期间捕捉到一个信号,则该系统调用就被
中断不再继续执行。该系统调用返回出错,其errno设置为EINTR。这样处理是因为一个信号发生了,进程捕捉
到它,这意味着已经发生了某种事情,所以是个好机会应当唤醒阻塞的系统调用。

前面一句说当捕捉到一个信号时系统调用被中断不再继续执行,后面为什么又说是一个好机会应当唤醒阻塞的系统调用?

之前我对于"唤醒阻塞的系统调用"理解有问题.我以为所谓的被唤醒指的是该系统调用从阻塞状态变为正常执行状态.

当一个系统调用被阻塞时,如果中断到来,转到中断处理函数中执行,执行完之后,该系统调用继续阻塞呢还是出错返回呢?

如果继续阻塞,那么该阻塞状态并没有被唤醒,如果出错返回,则它已经退出了阻塞状态.出错返回也是被唤醒的一种形式.

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值