关于I/O的那点事
转载请著名作者和地址http://www.cnblogs.com/scotth/p/3645489.html
1.关于 IO (fopen出现的错误 errorCode 183)
相关知识点:
开发到后面基础,和操作系统真的是越来越重要了。
1.4.3 不用缓存的I/O
对Disk直接操作,所以BUFFSIZE的大小,与性能有直接关系。(虽然函数原型也是ANSI C标准的一部分,不推荐用这个,Disk I/O虽然是异步的,但是慢,且没有灵活度)
Windows 下
// File - raw unbuffered disk file I/O
CFile
CreateFile(),WriteFile().....
1.4.4 标准I/O
优点:
2.另一个使用标准I/O函数的优点与处理输入行有关(常常发生在UNIX的应用中)。
我们最熟悉的标准I/O函数是printf。在调用printf的程序中,总是包括<stdio.h>(通常包括在ourhdr.h中),因为此头文件包括了所有标准I/O函数的原型。
自由灵活,可以决定什么时候,用fflush(File*)来刷新buffer到Disk中。(一般是按照OS的buffer容量来决定,下面Windows OS有 #define BUFSIZ 可以看下面的代码 )
====================分割线
回过头来说说,我遇到的坑,
原因:同事调试的宏 ( 每帧的YUV数据都调用fopen保存 )忘记关,然后导致Handle不断上涨 和 fopen写文件的时候,(第2+次后)一直返回失败,errorCode 183
网上很多朋友遇到的问题,说第n次fopen后,errorCode返回183,也有可能是buffer满了。(一般用fflush()刷新buffer到Disk中就可以)
errorCode说是 ERROR_ALREADY_EXISTS
SystemError:http://msdn.microsoft.com/en-us/library/windows/desktop/ms681381%28v=vs.85%29.aspx
linux有errorNo,很简单,直接取值,就不多说了。
看下Windwos下stdio.h中定义的BUFSIZ 和FILE
/* Buffered I/O macros */
#if defined(_M_MPPC)
#define BUFSIZ 4096
#else /* defined (_M_MPPC) */
#define BUFSIZ 512
#endif /* defined (_M_MPPC) */
struct _iobuf {
char *_ptr;
int _cnt;
char *_base;
int _flag;
int _file;
int _charbuf;
int _bufsiz;
char *_tmpfname;
};
typedef struct _iobuf FILE;
#define _FILE_DEFINED
#endif
//====================================
好吧,玩多了c和cpp会很多各种奇妙的解决办法,比如指针的各种用法。
而java是大多用设计模式来解决问题,
。。想寻找个最优解的话,就必须对各种巧技 深入理解。(套用那谁的话,一知半解才是最可怕的。)
//后话============
chapter 5: Standard io Library
里面关于IO,Network的篇幅改动挺多
《深入理解计算机系统(原书第2版)》里面 第10章 系统级I/O
有优化unbuffer IO,并做到线程安全。(减少内核态和用户态切换, 一般使用于网络)
Robust IO, 封装好了,带缓冲和不带缓冲的IO函数。以后有对大量网络数据处理,应该可以细究。
关于I/O的那点事的更多相关文章
- 【腾讯Bugly干货分享】H5 视频直播那些事
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57a42ee6503dfcb22007ede8 Dev Club 是一个交流移动 ...
- CSharpGL(31)[译]OpenGL渲染管道那些事
CSharpGL(31)[译]OpenGL渲染管道那些事 +BIT祝威+悄悄在此留下版了个权的信息说: 开始 自认为对OpenGL的掌握到了一个小瓶颈,现在回头细细地捋一遍OpenGL渲染管道应当是一 ...
- TODO:字节的那点事Go篇
TODO:字节的那点事Go篇 (本文go version go1.7.3 darwin/amd64) 在Golang中string底层是由byte数组组成的. fmt.Println(len(&quo ...
- Microsoft Visual Studio 2013 — Project搭载IIS配置的那些事
前段时间在改Bug打开一个project时,发生了一件奇怪的事,好好的一直不能加载solution底下的这个project,错误如下图所示:大致的意思就是这个project的web server被配置 ...
- OpenNLP:驾驭文本,分词那些事
OpenNLP:驾驭文本,分词那些事 作者 白宁超 2016年3月27日19:55:03 摘要:字符串.字符数组以及其他文本表示的处理库构成大部分文本处理程序的基础.大部分语言都包括基本的处理库,这也 ...
- HTTPS那些事(一)HTTPS原理
转载来自:http://www.guokr.com/post/114121/ 谣言粉碎机前些日子发布的<用公共WiFi上网会危害银行账户安全吗?>,文中介绍了在使用HTTPS进行网络加密传 ...
- 做一个 App 前需要考虑的几件事
做一个 App 前需要考虑的几件事 来源:limboy的博客 随着工具链的完善,语言的升级以及各种优质教程的涌现,做一个 App 的成本也越来越低了.尽管如此,有些事情最好前期就做起来,避免当 ...
- Ctrl-A全选这点事(C#,WinForm)
所有的文本框,不管单行多行都Ctrl-A全选就好了吧?是啊,很方便.Windows的软件基本都是这样.可为什么我们自己制作的WinForm就默认不是这样呢?谁知道呢,可能是WinForm饱受诟病,要改 ...
- 使用Bandwagon的VPS第一件事《FQ》
说点闲话:昨天的长靴子到了,哎呀,今天那个高兴,踩着我的8厘米的过膝靴就出门上专业外语去了,扎了个麻花辫子,那个心情好哟,搞得我都不想继续学习linux平台上的C语言了,好想逛街----秀秀我的鞋子, ...
- 【转载】在IT界取得成功应该知道的10件事
在IT界取得成功应该知道的10件事 2011-08-11 13:31:30 分类: 项目管理 导读:前面大多数文章都是Jack Wallen写的,这是他的新作,看来要成为NB程序员还要不停的自我总结 ...
随机推荐
- [翻译][MVC 5 + EF 6] 5:Code First数据库迁移与程序部署
原文:Code First Migrations and Deployment with the Entity Framework in an ASP.NET MVC Application 1.启用 ...
- TweenMax动画库学习(三)
目录 TweenMax动画库学习(一) TweenMax动画库学习(二) TweenMax动画库学习(三) ...
- Java知识总结--JDBC&XML
1说说jdbc连接数据库的步骤 1.注册驱动 2.获得连接 3.执行sql语句 4.获得结果集,进行结果集的处理 5.关闭结果集 6.关闭连接,释放资源 2 statement 和preparedst ...
- Newtonsoft.Json.dll解析json的dll文件使用
要解析的json //解析前 //解析前 {,,,,,,,,,,},,,,,,,,,,,},,,,,,,,,,,,,,,,},,,,,,,,,},,,,,,,,,,,,},,,,,,,,,,,},,, ...
- javascripct数组
定义数组 数组对象用来在单独的变量名中存储一系列的值. 我们使用关键词 new 来创建数组对象.下面的代码定义了一个名为 myArray 的数组对象: var myArray=new Array() ...
- Mac OS X下GnuPlot的安装和配置(无法set term png等图片输出)
今天使用gitstats分析git repo的活动信息,发现其内部使用gnuplot,结果发现无法生成png图片,进入gnuplot的shell发现无法设置png格式输出.如下 gnuplot> ...
- 解决Genemotion 安装出现“Unable to start......”的问题
最近在用uiautomator做安卓自动化测试,由于没有测试设备,所以只好自己在电脑里面安装了一个GenyMotion模拟器,虽然速度不及真机,但是也算能解决大部分的需求. 安装完之后启动出现了以下错 ...
- 【JPA】表达条件查询的关键字
1.通过解析方法名创建查询 框架在进行方法名解析时,会先把方法名多余的前缀截取掉,比如 find.findBy.read.readBy.get.getBy,然后对剩下部分进行解析.并且如果方法的最后一 ...
- apt-get命令讲解
apt-get是一条linux命令,适用于deb包管理式的操作系统,主要用于自动从互联网的软件仓库中搜索.安装.升级.卸载软件或操作系统. apt-get是debian,ubuntu发行版的包管理工具 ...
- 《暗黑世界》安卓APK 编译流程详细说明教程!(图文)
原地址:http://bbs.gameres.com/forum.php?mod=viewthread&tid=223671 关于开发环境的搭建,之前的相关文档已经很详细的说明,对环境的搭建请 ...