行为Read()在Unix中被中断时

时间:2012-11-04 14:45:43

标签: c file unix file-handling

  

可能重复:
  File read() function in Unix Systems

假设read()函数读取了10个字节的数据并存储在缓冲区中。如果unix中的read()函数被信号中断并且我重新启动读取函数,如下所示,那么下一个字节将是存储在缓冲区中,当前位置+ 1或将从缓冲区的开头写入。

int r_read(int fd, void *buf, int size)
{
   while((retval=read(fd,buf,size))==-1 && errno ==EINTR);
  return retval;
}  

此致

1 个答案:

答案 0 :(得分:0)

在编码后,获得EINTR后,它会再次调用readbuf作为内存的起始地址来存储数据。这看起来很合适。

但是,read在读取部分数据时可能会返回正数,在这种情况下,while()会中断。