关于fread是否会阻塞的问题

  • Post author:
  • Post category:其他


1 fread这个函数是阻塞的吗?

2 当我读取某一个文件是否需要等到fread返回才能继续下面的操作?

3 还有,如果我读取的文件内部有错误(例如,那一块磁盘有问题,或是其他的一些问题),此时fread还能继续正常读取吗?如果读不到,fread是否会阻塞住,还是能马上返回异常?

1.fread不是阻塞函数,要不就是读到了,要不就是读不到或者异常返回。

2.fread函数打开文件后如果是读写方式,则该该文件直到操作完成后,其他进程才能对其操作。

3.fread有异常直接会返回错误。不会阻塞等待。

你可以设置fd的属性为阻塞或非阻塞

应该阻塞;

从文件读一定大小的数据,没内容可读则返回已读数据大小;

返回0通常是读到了文件尾。如果你确认没有到

文件尾,可以用ferror检查错误。

if ( ferror ( fp ) )
{
     printf("File read error.");
}


由命名管道的实现联想到 read 和 fread 的区别。 – shy_BIU – 博客园 (cnblogs.com)



版权声明:本文为oNelson123原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。