ofstream 陷入死循环

C++语言 码拜 8年前 (2016-09-24) 1137次浏览
本人的软件需要频繁的打开文件,写入数据,关闭文件。
主进程读文件。
线程写文件。
原因是文件流有句柄限制,所以读写都只有一个流对象。它不停的打开、写数据、关闭。
然后,一般情况下都是正常运行的,但是今天出了一个让本人摸不着头脑的问题。
ofstream 陷入死循环
输出的文件如下:
20130425,0,7524.00,7524.00,7524.00,7524.00,2,16
20130426,0,7490.00,7490.00,7490.00,7490.00,2,14
20130503,0,7464.00,7464.00,7464.00,7464.00,2,16
20130506,0,7496.00,7496.00,7496.00,7496.00,2,14
20130506,0,7496.00,7496.00,7496.00,7496.00,2,14
20130506,0,7496.00,7496.00,7496.00,7496.00,2,14
20130506,0,7496.00,7496.00,7496.00,7496.00,2,14
20130506,0,7496.00,7496.00,7496.00,7496.00,2,14
20130506,0,7496.00,7496.00,7496.00,7496.00,2,14
20130506,0,7496.00,7496.00,7496.00,7496.00,2,14
20130506,0,7496.00,7496.00,7496.00,7496.00,2,14
20130506,0,7496.00,7496.00,7496.00,7496.00,2,14
20130506,0,7496.00,7496.00,7496.00,7496.00,2,14
20130506,0,7496.00,7496.00,7496.00,7496.00,2,14
20130506,0,7496.00,7496.00,7496.00,7496.00,2,14
20130506,0,7496.00,7496.00,7496.00,7496.00,2,14
20130506,0,7496.00,7496.00,7496.00,7496.00,2,14
20130506,0,7496.00,7496.00,7496.00,7496.00,2,14

很多行:20130506,0,7496.00,7496.00,7496.00,7496.00,2,14
本来只想输出一行的。
出现这个问题的文档有好多个,整个程序原因是死循环的问题也假死了。
讨教高手,这是什么原因造成的,怎么改才可以。
解决方案

20

请判断每一步操作后ofstream的状态。

40

仅仅判断流能否打开一个文件是不够的。还需要判断流的状态位。

20

还有一个可能是,没有同步,导致iterator 失效

20

看着像多线程导致的数据损坏,stream 对象的状态已经乱了。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明ofstream 陷入死循环
喜欢 (0)
[1034331897@qq.com]
分享 (0)