Linux数据写操作改进
Linux的IO操作中数据的写函数int nwrite = write(int fd,void* buf ,int len)表示向fd文件描述符写入len个字节长度的数据报文,但是这并不能保证真正向内核缓冲区写入了len个数据。比如当内核socket缓冲区不足,小于len个字节,则会只写入其中的一部分,返回nwrite表示实际写入的字节数:因为这种读写方式可以保证数据全部写入缓冲区,因此实际返回值只有-1表示写入错误,size表示完全写入缓冲区。
为了保证数据写入的完整性,采用循环的写入是非常必要的,下面是参考代码:
1 #include <unistd.h> 2 #include <stdio.h> 3 #include <errno.h> 4 #include <iostream> 5 using namespace std; 6 ssize_t writen(int fd, void* buf, size_t size) 7 { 8 char *ptr = (char*)buf; 9 int nleft = (int)size; 10 int nwritten; 11 while (nleft > 0) 12 { 13 nwritten = write(fd, ptr, nleft); 14 if (nwritten <= 0) 15 { 16 if (nwritten < 0 && errno&EINTR)//发生该错误则继续进行读或写操作 17 { 18 nwritten = 0; //write again 19 } 20 else 21 return -1; //error 22 } 23 nleft -= nwritten; 24 ptr += nwritten; 25 } 26 return size; 27 }
转载于:https://www.cnblogs.com/shenshenlei/p/5528247.html
Linux数据写操作改进相关推荐
- SAP CRM Product UI是如何判断当前会话发生了数据写操作的
Created by Wang, Jerry, last modified on Dec 20, 2014 如果我点击了Edit按钮之后,什么操作也不做,直接保存,就会弹出这个"No cha ...
- Linux管道的原子性,管道的原子性 linux写操作原子性
从本质上说,管道也是一种文件,但他又和一般的文件有所不同,管道可以克服使用文件进行通信的两个问题 限制管道的大小.实际上,管道是一个固定大小的缓冲区.在Linux中该换冲区的大小为一页,4k 使得他的 ...
- Linux I/O操作fsync后数据就安全了么(fsync、fwrite、fflush、mmap、write barriers详解)
系列文章 Linux I/O操作fsync后数据就安全了么(fsync.fwrite.fflush.mmap.write barriers详解) Linux I/O系列之直接内存(Direct IO) ...
- linux flash擦除命令,Linux下flash操作读、写、擦除步骤
描述 1. 背景介绍 在板上,ZYNQ PL部分通过EMC连接一片NOR FLASH,地址空间如下: 可以看到NOR FLASH的起始地址为0x80000000,这是物理地址,可以把数据存放在以该地址 ...
- linux c open flush,ctrl+c以及写操作失败和flush
.kill命令可以带信号号码选项,也可以不带.如果没有信号号码,kill命令就会发出终止信号(15),这个信号可以被进程捕获,使得进程在退出之前可以清理并释放资源.也可以用kill向进程发送特定的信号 ...
- mysql修改工资字段_基于Linux的MySQL操作实例(修改表结构,MySQL索引,MySQL数据引擎)...
基于Linux的MySQL操作实例(修改表结构,MySQL索引,MySQL数据引擎) 前言 本篇是基于Linux下针对MySQL表结构的修改,MySQL索引的操作以及MySQL数据引擎的配置和说明. ...
- linux数据库分析报告,写linux数据
Linux 内存管理机制简介 在 Linux 中经常发现空闲内存很少,似乎所有的内存都被系统占用了,表面感觉是内存不够用了,其实不然.这是Linux内存管理的一个优秀特性,在这方面,区别于 Windo ...
- linux下分区ntfs,简易教程:Linux下NTFS分区的写操作
Linux下NTFS分区的写操作只需通过简单点击即可完成. 在你正常的工作中,假如你装的是双系统,其中一个是Winodws系统,而你又在Linux环境下办公,需要用到Windows分区中的某文档资料或 ...
- 杭电Matlab与仿真-MATLAB基本语法(二)-数据文件的读/写操作
数据文件的读/写操作 实验目的 实验内容与要求 实验程序与结果 实验目的 学会matlab数据输入与输出基本操作: 熟悉matlab各种文件的输入输出方法,了解常用的图片及音频文件的输入输出: 掌握用 ...
最新文章
- (转)Properties Editor为你解除通过native2ascii进行Unicode转码的烦恼
- 【 MATLAB 】使用 MATLAB 求某输入的稳态响应
- 【转载】ftp获取文件
- 关于不过洋节的通知_蟠桃宫小学关于平安夜、圣诞节安全教育告家长通知书
- 小明分享|8ms平台下工程源码分析
- dubbo web工程示例_带有Dubbo的Spring Cloud Alibaba
- 第5章 Python 数字图像处理(DIP) - 图像复原与重建13 - 空间滤波 - 线性位置不变退化 - 退化函数估计、运动模糊函数
- 塔罗牌第五张是什么牌_埃及塔罗牌之第五张牌的细节、释义与改动
- oracle12c开发连接jar包ojdbc7
- 新浪微博生成超短链接
- 域名该怎样选_怎样选择域名?
- 使用Springboot+Feign Clients快速搭建REST客户端应用
- 杨焘鸣 杨涛鸣:怎样建立自己的人脉网络
- 行业云服务——乐视云点播服务试用体验
- Julia实现GCC-PHAT算法
- Android 9.0 framework 授予安装未知来源应用权限(去掉未知来源弹窗)
- 软件测试面试题 | 提BUG相关
- K8S中deployment和service案例
- MES和ERP在生产过程优化上,谁更胜一筹?
- 扫地机器人(简单路径规划)