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);
}
Qt linux文件同步写入的更多相关文章
- 烂泥:linux文件同步之rsync学习(一)
本文由秀依林枫提供友情赞助,首发于烂泥行天下. 这几天刚好有空就打算开始学习linux下的文件同步软件rsync,在学习rsync时,我们可以分以下几个步骤进行: 1. rsync是什么 2. rsy ...
- Linux文件同步
简介 文件实时同步对于运维是个很常见的需求. 如集群的机器,需要上传个文件,之前的步骤是每台服务器分别上传. 做文件同步以后,只上传一台,其他机器自动同步. 目前实现实时同步的主流方案有 rsync+ ...
- Linux文件同步工具之rsync
学习背景 1.最近公司的项目在使用jenkins做自动化构建,因为jenkins在构建时是比较耗性能的,便单独使用了一台服务器做构建服务器.但是个人觉得这样成本过高,单独拿一台服务器来构建并且该服务器 ...
- linux 文件同步
ref: https://www.cnblogs.com/MacoLee/p/5633650.html https://wenda.so.com/q/1505308236213470 http://b ...
- Linux 文件缓存 (一)
缓存印象 缓存给人的感觉就是可以提高程序运行速度,比如在桌面环境中,第一次打开一个大型程序可能需要10秒,但是关闭程序后再次打开可能只需5秒了.这是因为运行程序需要的代码.数据文件在操作系统中得到了缓 ...
- linux服务器之间的文件同步;rsync+inotifywait;同步多个目录
1.双向同步:unison+inotify 2.单向同步:rsync+inotify python版的pyinotify 本文介绍第二种方法: 1.Inotify 是一个 Linux特性,它监控文件系 ...
- 负载均衡配置下的不同服务器【Linux】文件同步问题
负载均衡配置下的不同服务器[Linux]文件同步问题2017年04月13日 22:04:28 守望dfdfdf 阅读数:2468 标签: linux负载均衡服务器 更多个人分类: 工作 问题编辑版权声 ...
- 【转帖】Linux上搭建Samba,实现windows与Linux文件数据同步
Linux上搭建Samba,实现windows与Linux文件数据同步 2018年06月09日 :: m_nanle_xiaobudiu 阅读数 15812更多 分类专栏: Linux Samba 版 ...
- Linux下利用rsync实现多服务器文件同步
windows做为文件服务器,使用rsync的windows服务版本,然后配置好就可以了.需要的朋友可以参考下. windows做为文件服务器,使用rsync的windows服务版本:cwRsyncS ...
随机推荐
- Knockout v3.4.0 中文版教程-12-控制文本内容和外观-html绑定
3. html绑定 目的 html绑定会使关联的DOM元素显示你参数指定的html内容. 当你的视图模型里面的值是HTML标记字符串,而你想要呈现它,这时候用html绑定特别合适. 例子 <di ...
- linux 安装SNV服务
1.安装vnc server[root@pxe ~]# yum install tigervnc-server -y 2.设置 vnc server 开机启动[root@pxe ~]# chkconf ...
- 获取class
使用原生JavaScript,获取类操作符时:即使使用getElementByClassName,在Firefox和IE9以下是不兼容的.Firefox下是可以用它获取的到元素而IE不行,一般框架都会 ...
- python基础-对象
1. 对象:一组数据和操作数据方法的集合 >>> class Person(object): ... def __init__(self,name): ... ...
- [android开发篇]项目目录结构
- hdu2083
开始忘排序了. #include <stdio.h> #include <math.h> #include <algorithm> using namespace ...
- HDU-1030 Delta-wave ,暴力贪心!
Delta-wave 题意:用图中所示的数字填满这个三角形,求n到m的最短路径,也就是最少通过几条边. 思路:简单贪心就可以了,本人是先将每一层的左右端点用结构体存起来,然后分奇偶判断. 这题必须理清 ...
- Python MySQLdb的execute和executemany的使用
如果使用executemany对数据进行批量插入的话,要注意一下事项: conn = MySQLdb.connect(host = “localhost”, user = “root”, passwd ...
- BZOJ 2190 [SDOI2008]仪仗队 ——Dirichlet积
[题目分析] 考虑斜率为0和斜率不存在的两条线上只能看到3人. 其余的人能被看见,当且仅当gcd(x,y)=1 ,然后拿卷积算一算 发现就是欧拉函数的前缀和的二倍. 注意2的情况要特判. [代码] # ...
- 软件包管理器(bzoj 4196)
Description Linux用户和OSX用户一定对软件包管理器不会陌生.通过软件包管理器,你可以通过一行命令安装某一个软件包,然后软件包管理器会帮助你从软件源下载软件包,同时自动解决所有的依赖( ...