linux – fsync(fd)是否适用于外部程序创建的文件?
发布时间:2020-12-14 01:43:36 所属栏目:Linux 来源:网络整理
导读:我有一个禁用写入缓存的SATA硬盘: hdparm -W0 /dev/foo 我正在使用这些挂载选项(以及其他)的ext4分区上运行: data=orderedauto_da_alloc Linux内核版本是2.6.32-5-686. 现在,我有一个我无法修改的外部程序,但我知道以下列方式创建一个文件: int fd = open
我有一个禁用写入缓存的SATA硬盘:
hdparm -W0 /dev/foo 我正在使用这些挂载选项(以及其他)的ext4分区上运行: data=ordered auto_da_alloc Linux内核版本是2.6.32-5-686. 现在,我有一个我无法修改的外部程序,但我知道以下列方式创建一个文件: int fd = open(path); write(fd,data,data_size); close(fd); 即在关闭之前它没有fsync.所以在这一点上,数据可能在RAM中,在kernel / fs缓存中的某个地方. 注意:元数据还不是一个问题:在我确保数据已经到达磁盘盘片之后,最终的元数据将被写入并保存.数据本身就是问题所在. 所以问题是,我如何帮助数据到达实际的磁盘盘片? 我之后想过运行这个单独的程序: int fd = open(path); fsync(fd); close(fd); 这有助于刷新数据,还是应该使用不同的方法? 解决方法
是的,fsync的用户并不重要. 请注意,您可能希望同步fsync文件所在的目录,以便同步文件的元数据. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |