在Qt开发过程中,遇到按键关机请求,槽函数中,需要保存系统配置文件,然后立刻关机。
重启系统,发现保存失败,原因在于配置文件并没有写到磁盘等存储介质上,正确的处理方式为:
QFile::close()函数并不能保证文件被写进磁盘,需要用函数fsync()来同步文件到磁盘。
#include <unistd.h>
#include <QFile>
/* 以下为槽函数中处理方法*/
void Widget::keyEvent()
{
QFile SFile("/home/xxx.txt");
if(!SFile.open(QIODevice::ReadWrite | QIODevice::Text))
{
// 文件打开失败
}
else
{
// 文件处理
}
fsync(SFile.handle());
SFile.close();
sleep(1);
//关机
}