您的位置:首页 > 运维架构 > Linux

linux 信号 中断的系统调用

2016-01-30 18:19 501 查看
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宏决定
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: