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

关于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
    关注

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

    评论

报告相同问题?