fclose会写入硬盘吗 linux_Qt linux文件同步写入
由于linux 系統機制問題,文件的創建和寫入并不會直接寫入硬盤,而是先寫入緩存,當系統要關閉或需要時才寫入硬盤。為防止突然掉電,應將緩存中的文件及時同步到硬盤上去。linux 下的sync 命令具有數據同步功能,我們可以在Qt程序中調用該命令。
附:sync 命令說明
sync命令 linux同步數據命令
格式: sync
用途:更新 i-node 表,并將緩沖文件寫到硬盤中。
功能:sync命令是在關閉Linux系統時使用的。 用戶需要注意的是,不能用簡單的關閉電源的方法關閉系統,因為Linux象其他Unix系統一樣,在內存中緩存了許多數據,在關閉系統時需要進行內存數據與硬盤數據的同步校驗,保證硬盤數據在關閉系統時是最新的,只有這樣才能確保數據不會丟失。一般正常的關閉系統的過程是自動進行這些工作的,在系統運行過程中也會定時做這些工作,不需要用戶干預。 sync命令是強制把內存中的數據寫回硬盤,以免數據的丟失。用戶可以在需要的時候使用此命令。
sync 命令運行 sync 子例程。如果必須停止系統,則運行 sync 命令以確保文件系統的完整性。sync 命令將所有未寫的系統緩沖區寫到磁盤中,包含已修改的 i-node、已延遲的塊 I/O 和讀寫映射文件。
程序源碼:
使用Qt自帶類QSettings
//保存
void MainWindow::on_pushButton_clicked()
{
QString string="中華人民共和國 hello world!";
QSettings setting("/mnt/nand1-2/dd/config.ini",QSettings::IniFormat);//生成配置文件
setting.beginGroup("config");//beginGroup與下面endGroup 相對應,“config”是標記
setting.setValue("page",QVariant(string));
setting.setValue("site",QVariant("http://www.cppblog.com/gaimor/"));
setting.setValue("maker",QVariant("Gaimor"));
setting.endGroup();
//強制將內存數據寫入硬盤
system("sync");
//清空
ui->lineEdit->clear();
}
//讀配置文件
QSettings setting("/mnt/nand1-2/dd/config.ini",QSettings::IniFormat);//讀配置文件
setting.beginGroup("config");
QString page=setting.value("page").toString();
ui->plainTextEdit->appendPlainText(page);
使用C庫實現
//C函數庫
void MainWindow::on_pushButton_5_clicked()
{
FILE *fd;
FILE *fd1;
char str[LENGTH];
fd = fopen("/mnt/nand1-2/dd/file.txt", "w+");
/* 創建并打開文件 */
if (fd)
{
fputs("Hello, create file success!", fd);
/* 寫入Hello, software weekly字符串 */
fclose(fd);
}
//強制將內存數據寫入硬盤
system("sync");
fd1 = fopen("/mnt/nand1-2/dd/file.txt", "r");
fgets(str, LENGTH, fd1);
/* 讀取文件內容 */
ui->textBrowser->insertPlainText(str);
printf("%s\n", str);
fclose(fd1);
}
總結
以上是生活随笔為你收集整理的fclose会写入硬盘吗 linux_Qt linux文件同步写入的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 定时覆盖库_高考直通车公众号 联考题库大
- 下一篇: 展鹏科技是做什么的