linux – fsync(fd)是否适用于外部程序创建的文件?

linux – fsync(fd)是否适用于外部程序创建的文件?,第1张

概述我有一个禁用写入缓存的SATA硬盘: hdparm -W0 /dev/foo 我正在使用这些挂载选项(以及其他)的ext4分区上运行: data=orderedauto_da_alloc Linux内核版本是2.6.32-5-686. 现在,我有一个我无法修改的外部程序,但我知道以下列方式创建一个文件: int fd = open(path);write(fd, data, data_size 我有一个禁用写入缓存的SATA硬盘:

hdparm -W0 /dev/foo

我正在使用这些挂载选项(以及其他)的ext4分区上运行:

data=orderedauto_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);

这有助于刷新数据,还是应该使用不同的方法?

解决方法

Will that help flush the data,

是的,fsync的用户并不重要.

请注意,您可能希望同步fsync文件所在的目录,以便同步文件的元数据.

总结

以上是内存溢出为你收集整理的linux – fsync(fd)是否适用于外部程序创建的文件?全部内容,希望文章能够帮你解决linux – fsync(fd)是否适用于外部程序创建的文件?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/1029628.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-23
下一篇2022-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存