Solaris で同期ディスク フラッシュを行う最良の方法は何ですか? 単一のファイルではなく、すべてのディスクをフラッシュしたい。
Solaris (Linux とは逆) での Sync() は非同期で動作します。SYNCHRONOUS sync() を探しています (完了すると返されます)。
当然の質問: 同期が適切に行われたことを確認する方法は? 完了したことを示すテストを作成するにはどうすればよいですか?
ありがとう!
以下を実行できます。
/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");
コードに行を追加することです。