SYNC(2) | Linux Programmer's Manual | SYNC(2) |
sync, syncfs - バッファーキャッシュをディスクに書き込む
#include <unistd.h>
void sync(void);
int syncfs(int fd);
glibc
向けの機能検査マクロの要件
(feature_test_macros(7) 参照):
sync():
syncfs():
sync() を呼び出すと、バッファーされたファイルのメタデータとデータ本体に 対して行われた全ての変更が、対応するファイルシステムに書き込まれる。
syncfs() は sync() と同様だが、オープンされたファイルディスクリプター fd が参照するファイルを含むファイルシステムだけを同期する点が異なる。
syncfs() は成功すると 0 を返す。エラーが発生した場合は -1 を返し、 errno にエラーを示す値を設定する。
sync() は常に成功する。
syncfs() は少なくとも以下の理由で失敗する可能性がある:
syncfs() は Linux 2.6.39 で初めて登場した。 ライブラリによるサポートは glibc バージョン 2.14 で追加された。
sync(): SVr4, 4.3BSD, POSIX.1-2001.
syncfs() is Linux 固有である。
Linux での sync() のプロトタイプは、さまざまな標準規格での規定に準拠し、 glibc 2.2.2 から上述のようになった。 glibc 2.2.1 以前ではプロトタイプは "int sync(void)" で、 sync() は常に 0 を返していた。
標準規格 (例えば
POSIX.1-2001) によると、 sync()
は書き込むことを予定に
組み込むのみで実際に書き込みが終了する前に戻ってもよいことになっている。
一方で Linux
はバージョン 1.3.20
からは書き込みが終了するまで待つ。
(最近のディスクは大きなキャッシュを持っているため、
これはデータの完全性
(data integrity)
までは保証していない。)
この man ページは Linux man-pages プロジェクトのリリース 3.79 の一部 である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。
2014-08-19 | Linux |