linux 信号 中断的系统调用

apue上提到了低速的系统调用  解释很长很麻烦 第三版 260页

我只是简单的理解为能够发生阻塞并且阻塞时间够长且有可能永远阻塞的系统调用  


当这些函数处于阻塞期,恰好捕捉到一个信号,则该系统调用返回出错,起errno设置为EINTR;

而我们希望重启这些函数则出线了这样的代码


again:

if(( n == read(fd,buf,BUFSIZE)) < 0)

{

if(errno == EINTR)

{

goto again:

}

}



然而随着时间的流失,更方便的方法出来了。那就是自启动的系统调用

包括:ioctl read readv  write  writev  wait  waitpid

因为这也许会带来问题,所以进程可以控制每个信号中断这些系统调用后,是否重启。具体方式sigaction函数用SA_INTERRUPT宏决定

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值