当前位置: 技术问答>linux和unix
关于fread是否会阻塞的问题
来源: 互联网 发布时间:2016-11-20
本文导语: 1 fread这个函数是阻塞的吗? 2 当我读取某一个文件是否需要等到fread返回才能继续下面的操作? 3 还有,如果我读取的文件内部有错误(例如,那一块磁盘有问题,或是其他的一些问题),此时fread还能继续正常读取...
1 fread这个函数是阻塞的吗?
2 当我读取某一个文件是否需要等到fread返回才能继续下面的操作?
3 还有,如果我读取的文件内部有错误(例如,那一块磁盘有问题,或是其他的一些问题),此时fread还能继续正常读取吗?如果读不到,fread是否会阻塞住,还是能马上返回异常?
2 当我读取某一个文件是否需要等到fread返回才能继续下面的操作?
3 还有,如果我读取的文件内部有错误(例如,那一块磁盘有问题,或是其他的一些问题),此时fread还能继续正常读取吗?如果读不到,fread是否会阻塞住,还是能马上返回异常?
|
1.fread不是阻塞函数,要不就是读到了,要不就是读不到或者异常返回。
2.fread函数打开文件后如果是读写方式,则该该文件直到操作完成后,其他进程才能对其操作。
所为执行该函数后肯定会有一个返回
3.fread有异常直接会返回错误。不会阻塞等待。
2.fread函数打开文件后如果是读写方式,则该该文件直到操作完成后,其他进程才能对其操作。
所为执行该函数后肯定会有一个返回
3.fread有异常直接会返回错误。不会阻塞等待。
|
如果用fread读文件,不会阻塞
如果用来读管道、socket连接等,则可能会阻塞
如果用来读管道、socket连接等,则可能会阻塞
|
你可以设置fd的属性为阻塞或非阻塞
|
应该阻塞;
从文件读一定大小的数据,没内容可读则返回已读数据大小;
返回0通常是读到了文件尾。如果你确认没有到
文件尾,可以用ferror检查错误。
if ( ferror ( fp ) )
{
printf("File read error.");
}
从文件读一定大小的数据,没内容可读则返回已读数据大小;
返回0通常是读到了文件尾。如果你确认没有到
文件尾,可以用ferror检查错误。
if ( ferror ( fp ) )
{
printf("File read error.");
}
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。