多进程对文件同时读写_weixin_34110749的博客-程序员宝宝

技术标签: 操作系统  c/c++  

项目需求,涉及到A进程写文件,B进程读文件,并且A进程每写1000字节数据,B进程接着读1000字节数据;

之前组长说这个要加锁,我觉得没必要,随手在windows 命令行下做了实验,验证了不会有冲突,回来后专门在linux下用c代码验证,果然,加锁是不必要的,也不会出现“脏数据”

不过还是有收获,给自己提个醒:

文件句柄或者表述符没有所谓的读指针,写指针,每个进程下对应的文件描述符,只有一个操作偏移量,不管是读操作,写操作还是追加操作,都会改变该文件的偏移量;

如果A进程是open文件,则B进程通过lseek(fd, 0,SEEK_END)可以实时的得到文件大小;
如果A进程是fopen文件,因为有缓冲,大部分系统都是4096;使用fseek(fd, 0, SEEK_END); 不会实时得到文件大小,解决办法,给fopen文件句柄设置无缓冲setbuf(fd, NULL); 或者fwrite后立即fflush;

不过还是忐忑,为什么组长一说到文件同时操作,就想到共享资源要加锁,难不成我那里没考虑周全?

转载于:https://my.oschina.net/plp626/blog/177883

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_34110749/article/details/91839984

智能推荐

Web_PHP_Curl浅说;_cyb_23的博客-程序员宝宝

<?php/** * curl会话 * @author 2WR3_cyb */class CurlClass { /** * Curl使用示例 * @param string $url 请求路径,如'http://x.x.x'; * @param array $fields 请求参数,如array('var' => 'value'), or can

黑马程序员--面对对象3_捌年的博客-程序员宝宝

------- android培训、java培训、期待与您交流! ----------一、继承定义:  在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并可以加入若干新的内容,或修改原来的方法使之更适合特殊的需要,这就是继承。继承是子类自动共享父类数据和方法的机制,这是类之间的一种关系,提高了软件的可重用性和可

基础的重要性(程序员之路)_张冰庭的博客-程序员宝宝

学习编程有几年了,感觉走了不少弯路,而不少的学弟学妹又在重蹈我当初的覆辙,不免有些痛心。最近在网上也看了许多前辈们的经验建议,再结合自己的学习经历在这里谈谈基础的重要性,希望帮助大家少走些弯路。    什么是基础呢?就是要把我们大学所学的离散数学,算法与数据结构,操作系统,计算机体系结构,编译原理等课程学好,对计算机的体系,CPU本身,操作系统内核,系统平台,面向对象编程,程序的性能等要有

0003C语言--数据类型及运算符_北冥有鱼zsp的博客-程序员宝宝

本文主要讲解的知识点是进制数,数据类型及其转换,运算符。1.进制数及其转换进制是一种计数机制,它可以使用有限的数字符号代表所有的数值。对于任何一种进制——X 进制, 就表示某一位置上的数运算时逢 X 进一位。对于计算机系统来说,常见的进制数有二进制,八进制,十进制及十六进制。(1)二进制对于绝大多数计算机系统来说,数据都是通过二进制的形式存在的。二进制是一种“逢二进一”的机制, 它...

中兴U880 完美版2.3.7第三弹炫目登场,你还在为刷机而烦恼?来吧!它值得你拥有!!!!_打杂人的博客-程序员宝宝

本帖最后由 销魂的猫 于 2012-1-30 14:10 编辑http://wenku.baidu.com/view/d0e4d9350b4c2e3f572763fb.html下个版本需等本帖达到1000个评分、5000个回复后再发布!免得有那么多的伸手党!   完美版第四弹热点功能抢先报:1、装逼专用4.0.1版本,2、提升软件运行速度3、系统设置背景改为 图

随便推点

3D图形学(6):正向渲染和延迟渲染_鹅厂程序小哥的博客-程序员宝宝

内容引自《Real Time Rendering 3rd》Forward Rendering(正向渲染)发生在渲染管线的顶点处理阶段,会计算所有的顶点的光照。全平台支持。规则一:最亮的几个光源会被实现为像素光照 规则二:然后最多4个光源会被实现为顶点光照 规则三:剩下的光源会被实现为效率较高的球面调谐光照(Spherical Hamanic),这是一种模拟光照规则一补充说明...

(原创)咱们公司遇到一个想开发和抖音一样的app的客户?_qq18723817197的博客-程序员宝宝

如果客户说想开发一款和抖音一模一样的app,结果会?——链环科技

我和你们不同--和谐就是和而不同--就是多样性的统一_LLKJDLLKJD的博客-程序员宝宝

     软件开发我从来没有研究过,我是寻求一个帮助偶然来到这个空间,希望哪位朋友能够帮助我编写一个这样简单的软件---将标志某商品的品名、产地生产商、经销商、规格型号、产品编号、特殊字符的信息编写成为另外一组可以自由设定的信息,当输入其中某一段信息后,就可以自动导出这些自由设定的信息,就好象户口管理,输入名字,就可以导出身份证号码一样;用途是:好查找库房放置的商品位置。    我的手机号码是

每个程序员都必须遵守的编程原则_马兆娟的博客-程序员宝宝

恰巧看到这篇文章,学过面向对象语言的人会很容易理解里面涉及的编程原则,这些原则恰恰是面向对象语言中常说的。感觉这篇文章写得不错,共享出来,共同学习……原文地址:http://www.aqee.net/principles-of-good-programming/      ============================分割线,请看下文=====================

数据处理平台架构中的SMACK组合:Spark、Mesos、Akka、Cassandra以及Kafka_似水流年的博客-程序员宝宝

摘要: 在今天的文章中,我们将着重探讨如何利用SMACK(即Spark、Mesos、Akka、Cassandra以及Kafka)堆栈构建可扩展数据处理平台。虽然这套堆栈仅由数个简单部分组成,但其能够实现大量不同系统设计。除了纯粹的批量或者流处理机制之外,我们亦可借此实现复杂的Lambda以及Kappa架构。在今天的文章中,我们将着重探讨如何利用SMACK(即Spark、Mesos、Akka、Cassandra以及Kafka)堆栈构建可扩展数据处理平台。虽然这套堆栈仅由数个简单部分组成,但其能够实现大量不