关于fread是否会阻塞的问题

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)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值