重启后ARM Linux文件为空

时间:2014-03-05 12:59:13

标签: linux

我正在尝试打开一个文件进行重写。然后我关闭文件,重新打开它以进行读取以验证它是否正常。确实如此。但是,在我拔下设备(ARM)并再次插入后,我发现文件变空了。我也尝试手动复制文件(使用cp),同样的现象再次发生。 这是一些代码:

string fileName = "/home/root/LogiTrackV2/InitialSetup.xml";                
ofstream theFile (fileName.c_str());
if (theFile.is_open())
{

   theFile.close();
}

theFile.open(fileName.c_str(), ios::out | ios::trunc);

theFile << xmlOUT.c_str();
theFile.close();

正如我之后提到的,文件存在并按原样更新。问题是当我拔下电源插头时......

1 个答案:

答案 0 :(得分:2)

问题比我在C ++中想象的要复杂得多。标准库中无法强制fsync上的POSIX ofstream调用。但是,您可以将Boost.Iostream与file_descriptor_sinkhttp://www.boost.org/doc/libs/1_55_0/libs/iostreams/doc/classes/file_descriptor.html)一起使用,并在提供的fsync上执行fd,以强制Linux将文件写入磁盘。