上下文
我正在使用启用了实时数据压缩的UBIFS文件系统。我需要在C代码中获取正确的文件系统指标(总,已用,可用空间)。
尝试过的事情
我使用statvfs
调用成功检索了指标,但是注意到返回的值就像从未压缩过数据一样。从命令行进行sync(8)
调用并再次调用C代码后,返回了正确的值,因此在C代码中,我在sync(2)
之前包括了对statvfs
的调用。再次调用已修改的C代码仍然返回带有值的指标,就好像没有压缩数据一样。然后,我尝试在system("sync")
之前进行系统调用statvfs
,但是仍然返回了错误的度量标准值。仅在等待10秒钟左右或通过明确的sync(8)
调用之后,返回的文件系统指标才正确。
问题
1)为什么在从命令行调用sync(2)
和system("sync")
之前,在C代码中调用statvfs
或sync(8)
会有这种区别?
2)如何使用C代码将待处理/缓存的数据提交到磁盘,以便随后的statvfs
调用将返回正确的文件系统指标?