beyond8820 2018-04-28 03:29 采纳率: 0%
浏览 1486
已结题

关于fopen频繁写文件的error原因分析及解决方案 (再次求助)

进程A中,在一个单独的线程里对收到的消息数据进行处理,并打开一个文件,写入数据,关闭文件。关闭文件后,执行CopyFile, 复制当前文件,生成一个新文件,再由另一个进程B对新生成的文件进行读取。
现在在fopen时,会频繁报错 open file error,但是具体的error原因,没有在code中打出来,目前也无法得知。

2018/04/26 10:28:44.222 I ThreadB Process message: src= 5

2018/04/26 10:28:44.223 I ThreadB Process message: src= 0

2018/04/26 10:28:44.482 I ThreadB Process message: src= 1

2018/04/26 10:28:44.482 E ThreadB Error Opening ** file: C:\writting.txt

2018/04/26 10:28:44.482 I ThreadB Process message: src= 2

2018/04/26 10:28:44.482 E ThreadB Error Opening ** file: C:\writting.txt

2018/04/26 10:28:44.482 I ThreadB Process message: src= 3

2018/04/26 10:28:44.482 E ThreadB Error Opening ** file: C:\writting.txt

从log中可以看到,起初的一段时间,是可以正常工作的,有三四个open error出现,基本在几个毫秒级别,然后又回复正常,然后会重复这种情况,间隔几秒,十几秒,或者几分钟会出现几个error,最后,会连续出现error,然后就无法恢复了。最后只有重启进程,删掉文件并重建。

对文件处理不是很了解,重开一贴顶上去,请大牛指教原因。
谢谢

  • 写回答

8条回答 默认 最新

  • threenewbee 2018-04-28 03:41
    关注

    文件被占用,你需要用互斥量让另一个进程等待,等文件写完了,再读取,或者可以用一个事务队列

    评论

报告相同问题?

悬赏问题

  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试,帮帮忙吧
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建