linux使用C++代码创建文件并写入内容,重启后文件内容没了
时间: 2023-06-22 11:41:45 浏览: 150
这种情况也可能是因为文件内容并没有完全写入硬盘中,而是被缓存在操作系统的内存中,当重启系统时,内存中的数据会被清空,导致文件内容丢失。为了解决这个问题,可以在写入文件内容时,使用缓存同步和文件同步的方法,确保文件内容被完全写入硬盘中,例如:
```c++
#include <iostream>
#include <fstream>
#include <unistd.h>
using namespace std;
int main() {
string filename = "test.txt";
string content = "hello world";
// 打开文件
ofstream outfile(filename, ios::out);
if (!outfile.is_open()) {
cout << "Open file error!" << endl;
return -1;
}
// 写入文件内容
outfile << content;
// 强制将缓存中的数据写入硬盘
outfile.flush();
// 将文件数据同步到硬盘中
syncfs(outfile.rdbuf()->fd());
// 关闭文件
outfile.close();
return 0;
}
```
这样,就可以避免文件内容丢失的问题。注意,使用`syncfs`函数时需要包含头文件`<unistd.h>`。
阅读全文