使用Ubuntu18.04和QT Creator以及C++; 胡:我正在用C++语言开发QT Creator的Ubuntu应用程序,当系统突然关闭时,我遇到了一个问题。我经常修改一些文件,当我的系统关闭时,不会保存最后的更改,但会在最后一行添加几个“0”字符。我总是刷新并关闭文件,但无论如何我都有问题
有人能帮我吗 这是我的代码:使用Ubuntu18.04和QT Creator以及C++; 胡:我正在用C++语言开发QT Creator的Ubuntu应用程序,当系统突然关闭时,我遇到了一个问题。我经常修改一些文件,当我的系统关闭时,不会保存最后的更改,但会在最后一行添加几个“0”字符。我总是刷新并关闭文件,但无论如何我都有问题,c++,qt,file,ubuntu,system-shutdown,C++,Qt,File,Ubuntu,System Shutdown,有人能帮我吗 这是我的代码: AddItemLog(unsigned char Index,QString Cadena) { QFile File(FileNames[Index]); File.open(QIODevice::ReadWrite | QIODevice::Append); QTextStream Stream(&File); Stream << GetStringDate(false) << ": &
AddItemLog(unsigned char Index,QString Cadena)
{
QFile File(FileNames[Index]);
File.open(QIODevice::ReadWrite | QIODevice::Append);
QTextStream Stream(&File);
Stream << GetStringDate(false) << ": " << Cadena.toUtf8() << endl;
File.flush();
File.close();
}
AddItemLog(无符号字符索引,QString-Cadena)
{
QFile文件(文件名[索引]);
open(QIODevice::ReadWrite | QIODevice::Append);
QTextStream流(&文件);
对文件的流刷新不能保证您的字节实际命中磁盘。您可能希望使用Unbuffered
打开模式试试运气,或者在底层文件描述符上使用fdatasync
。我使用了fdatasync函数,它可以工作。谢谢!