通过read()读文件
一、在POSIX中的定义
#include <unistd.h>ssize_t read(int fd, void *buf, size_t len);
二、调用read()的可能结果
2.1 返回值为len;读取到的所有len个字节都被存储在buf中,结果和预期的一致;
2.2 返回值小于len大于0;读取到的字节被存储到buf中,原因:
(1)在读取过程中信号中断或在读取中出错;
(2)可读的数据大于0字节小于len字节在读取len字节之前到达EOF
2.3 返回0,表示EOF,没有更多的数据可读;
2.4 由于当前没有数据可用,调用阻塞;在非阻塞模式下,不会发生这种情况;
2.5 返回-1,并把errno置为EINTR,这表示在读取任何字节之前收到信号;调用可以重新执行;
2.6 返回-1,并把errno置为非EINTR或EAGAIN的一个值,这表示更严重的错误,重新执行读操作不会成功
三、读入所有字节
ssize_t ret;while (len != 0 && (ret = read(fd, buf, len)) != 0) {if (ret == -1) {if (errno == EINTR) {continue; }perror("read");break;} len -= ret;buf += ret; }
四、非阻塞读
文件描述符以非阻塞模式打开(即open调用中指定参数O_NONBLOCK),并且没有数据可读,read调用会返回-1,并设置
errno值为EAGAIN,而不是阻塞;当以非阻塞模式读文件时,必须检查EAGAIN,否则可能因为丢失数据导致严重错误
char buf[BUFSIZ]; ssize_t nr;start: nr = read(fd, buf, BUFSIZ); if (nr == -1) {if (errno == EINTR) {goto start; } if (errno == EAGIN) {// 稍后重新读取 } else {// 发生错误 } }
转载于:https://www.cnblogs.com/soldierback/p/10667799.html
通过read()读文件相关推荐
- Java多种方式读文件,追加文件内容,等对文件的各种操作
一.多种方式读文件内容.1.按字节读取文件内容 2.按字符读取文件内容 3.按行读取文件内容 4.随机读取文件内容 import java.io.BufferedReader;import java. ...
- 读一个文件的java程序_java 读文件的几种方法(一)
先前使用一直很混乱的使用过这些方法,但都没有好好做过总结. 这两天趁有空,小结一下. 1.输入输出流 说起 java的 读写文件不得不说java中的输入输出流对象, 被读取的对象为输入流(如某个文件, ...
- c++ 读文件 文件指针 继续读_FatFs文件系统使用笔记
关于FatFs文件系统的指引 关于FATFS的使用记录一.提前说明二.各文件说明三.使用说明 3.1 diskio.c函数的编写 3.2 f_open读写性质说明 ...
- Java8读文件仅需一行代码
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载. https://blog.csdn.net/chszs/article/details/44023039 Java8读文件仅需一行代码 ...
- getline及读文件总结
今天由华为软件精英挑战赛的要求,读文件这块自己进行了总结,主要是泛型以及关联容器这块需要加强,现在总结了读文件的iterator的用法. 1.iterator inserter(essential C ...
- python读文件操作-python 之文件操作
使用open打开文件后一定要记得调用文件对象的close()方法.比如可以用try/finally语句来确保最后能关闭文件. file_object = open('thefile.txt') try ...
- python读文件写文件-python 文件读写操作
读文件 打开一个文件用open()方法(open()返回一个文件对象,它是可迭代的): >>> f = open('test.txt', 'r') r表示是文本文件,rb是二进制文件 ...
- python写文件读文件-Python 实例:读写文件
原标题:Python 实例:读写文件 读写文件是最常见的IO操作.内置了读写文件的函数,用法和的读写文件非常类似.在磁盘上读写文件的功能都是由提供的,现代不允许普通的程序直接操作磁盘,所以,读写文件就 ...
- python读文件每一行、并把这行替换-Python按行读文件
1. 最基本的读文件方法: # File: readline-example-1.py file = open("sample.txt") while 1: line = file ...
- python写文件读文件-Python 读写文件和file对象的方法(推荐)
1.open 使用open打开文件后一定要记得调用文件对象的close()方法.比如可以用try/finally语句来确保最后能关闭文件. file_object = open('thefile.tx ...
最新文章
- 工业机器人焊钳制作_一种工业焊接机器人及其冷却装置的制作方法
- Flash播放控件属性详解
- 网页打开微信公众号关注界面
- 【springBoot】注解的详解
- leetcode题解54-螺旋矩阵
- 设计Whats App
- Failed to load class org.slf4j.impl.StaticLoggerBinder
- oracle共享锁与排他锁 详解
- java 如何将word 转换为ftl_3种方法轻松将PDF转换为Word文档,办公必备
- 游戏帧数对比测试监控软件,8款游戏帧数对比实测 5800X多数超越11900K
- java beanshell_使用beanshell实现JAVA代码动态运行
- 线性代数 | (4) n维向量
- GIS开发之二维地下管线综合管理系统(Arcgis)第四节 查询(2)
- STM32用cube配置FATFS模式下SPI读写SD卡
- GDAL python教程基础篇(2)——用OGR写入矢量数据
- 【idea快捷键与其它工具插件】
- 程序设计语言中的 一等公民,二等公民,三等公民
- virtualpc2007 95/98系统驱动,虚拟工具,softice安装
- 永中科技破产与鲍尔默访华
- 考研数据结构判断题整合_做题版
热门文章
- 【linux】解决设置CentOS7虚拟机使用静态IP的常见错误解决方案
- 关于用Java程序实现8421码权限管理 -第三部分
- OpenGL透视投影
- Cocos2d开发系列
- 更换介质︰请把标有“Debian GNU/Linux 7.11.0 _Wheezy_ - Official amd64 DVD Binary-1 20160605-17:36“盘片插入驱动器”
- 台积电业绩出现下滑,开始进一步向中国大陆芯片企业示好
- 计导 第 10 章 软件工程
- pandas库--DataFrame常用操作
- 读书笔记-人月神话4
- 原生Mysql之and和or混合使用