多进程对文件同时读写

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值