博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
多进程对文件同时读写
阅读量:7178 次
发布时间:2019-06-29

本文共 504 字,大约阅读时间需要 1 分钟。

  hot3.png

项目需求,涉及到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

你可能感兴趣的文章
WPA: 4-Way Handshake failed - pre-shared key may be incorrect
查看>>
spring ref history&design philosophy
查看>>
Python之异常处理
查看>>
oracle存储过程基本
查看>>
@RestController和@GetMapping
查看>>
iOS开发--利用MPMoviePlayerController播放视频简单实现
查看>>
form表单、ajax 的上传文件
查看>>
[转]ViewFlipper实现多标签切换
查看>>
CentOS 6.5 Web服务器搭建
查看>>
IREP_SOA Integration WSDL概述(概念)
查看>>
自动任务调度系统
查看>>
ios显示或隐藏导航栏的底线
查看>>
背包问题
查看>>
2018/12/07 L1-035 情人节 Java
查看>>
swift 如何使用OC中宏的功能
查看>>
LED子系统剖析
查看>>
bug记录-setTimeout、setInterval之IOS7
查看>>
html网页的兼容性和css优先级
查看>>
python(49):把文件压缩成zip格式的文件
查看>>
Hadoop错误码速查
查看>>