1

语境

我正在使用启用了动态数据压缩的 UBIFS 文件系统。我需要在 C 代码中获取正确的文件系统指标(总、已用、可用空间)。

尝试了什么

我使用statvfscall 成功检索了指标,但注意到返回的值好像数据从未压缩过。在sync(8)从命令行调用并再次调用 C 代码后,返回了正确的值,因此在 C 代码中我包含了对sync(2)right before的调用statvfs。再次调用修改后的 C 代码仍会返回带有值的指标,就好像数据未压缩一样。然后我之前尝试进行系统调用system("sync")statvfs但仍然返回了不正确的度量值。只有在等待 10 秒或通过显式sync(8)调用后,返回的文件系统指标才是正确的。

问题

sync(2)1)为什么之前调用或system("sync")在C代码中调用statvfssync(8)从命令行调用之间存在这种差异?

2) 如何在 C 代码中将挂起/缓存的数据提交到磁盘,以便后续statvfs调用返回正确的文件系统指标?

4

0 回答 0