在Solaris上执行同步磁盘刷新的最佳方法是什么?我想刷新所有磁盘,而不是单个文件。
Solaris上的Sync()(与Linux相对)ASYNCHRONOUSLY,我正在寻找SYNCHRONOUS sync()(它完成时返回)
后续问题:如何正确检查同步?如何编写显示已完成的测试?
谢谢!
答案 0 :(得分:3)
你可以运行:
/usr/sbin/lockfs -af
-f
Force a synchronous flush of all data that is dirty at the time fsflush is run to its backing store for the named file system (or for all file systems.) It is a more reliable method than using sync(1M) because it does not return until all possible data has been pushed.
如果你想纯粹用C语言,你可以使用
#include <sys/filio.h>
...
ioctl(fd, _FIOFFS, NULL);
fd是文件系统挂载点的文件描述符(来自/ etc / mtab)。
请注意_FIOFFS是一个私有接口,因此可能随时消失,恕不另行通知。完全支持且更健壮的方法是简单地将行system("/usr/sbin/lockfs -af");
添加到您的代码中。