ofstream写大文件出错
纸箱猪 2012-04-25 06:14:03 我的程序在运行过程中会同时向磁盘写两个体积很大的二进制文件。文件A大致是240G,文件B大致是480G。两个文件都是用ofstream对象来维护的。写操作是通过ofstream的write成员函数实现的。
现在的问题是:每次写文件写到64%左右就会出错,write函数的返回值显示写操作没有成功。第一回是在文件A出错,第二回则是在文件B出错。
刚好这几天单位这边的电路在整改。程序两次出错,都正好是电工对配电箱进行操作、对中央空调和好几个房间的电路进行合闸开闸的时候。所以不知道有没有可能是电压不稳而导致磁盘写操作失败。但是我的房间并没有停电,也就是说电脑并没有停机,所以感觉很奇怪。
目前已经排除了单个文件大小限制的原因,因为我试过用ofstream的write成员函数向磁盘写700G的二进制文件,一点问题也没有。
不知有没有办法得知具体的错误原因?我觉得ofstream的几个标志——badbit、eofbit和failbit都给不出很有用的信息。目前正尝试用C标准库的errno和strerror获得出错原因。但是我看了一下errno的说明,要是errno是EIO(I/O error)的话,这信息也没有太大用处。
不知有没有人遇到过这种情况?