Я пишу код обработки файлов с использованием C ++.Проблема в том, что после записи в файл происходит немедленное отключение питания, файл не записывается.
Как я обнаружил, проблема связана с задержкой записи из системного буфера в постоянное хранилище файлов.
Я пришел к этому сценарию командой bash sync.Вот фрагмент кода
cout << "Writting to file" << endl;
ofstream fout("demo.dat", ios::out);
fout << "hello world" <<flush;
fout.close();
system("sync");
cout << "file written" << endl << "Sleeping for 3 secs"<<endl;
this_thread::sleep_for(chrono::seconds(3)); //disconnect power here
... some more statements
Проблема в том, что system () считается плохим, учитывая производительность, поскольку мне приходится очень часто записывать файлы.
Пожалуйста, дайте мне знать, если C ++ предоставляет какие-либолучший способ.
Я пытался использовать std :: flush, pubsync (), но он не работает.
Я выполняю обработку файлов в стиле C ++, поэтому не могу использовать обработку файлов в стиле C.