fsync(2) FreeBSD 一般コマンドマニュアル

fsync

前のページ 上に戻る 次のページ

fsync




書式

     #include <unistd.h>

     int
     fsync(int fd);


解説

     fsync() によって、 fd の修正されたすべてのデータと属性が永続的なストレー
     ジデバイスに移動されます。これによって、対応するファイルに関するバッファ
     のすべてのメモリ上のコピーで、修正された物がディスクに書き込まれる結果に
     なるのが普通です。

     fsync() は、ファイルが既知の状態にあることを要求するプログラムによって使
     用される必要があります。たとえば、簡単なトランザクション機能の構築です。


実装に関する注

     非スレッドライブラリでは、 fsync() は fsync システムコールとして実装され
     ています。

     スレッドライブラリでは、 fsync システムコールは _thread_sys_fsync() にア
     センブルされ、 fsync() は、読取りと書込みについて fd をロックしてから
     _thread_sys_fsync() を呼び出す関数として実装されています。戻る前に
     fsync() は fd をアンロックします。


戻り値

     関数 fsync() は、処理が成功すると値 0 を返します。そうでない場合、値 -1
     が返され、グローバル変数 errno が設定されてエラーを示します。


エラー

     fsync() は次の場合に失敗します。

     [EBADF]            fd が有効な記述子ではありません。

     [EINVAL]           fd がファイルではなくソケットを参照しています。

     [EIO]              ファイルシステムに読み書きしている間に入出力エラーが発
                        生しました。


関連項目

     sync(2), syncer(4), sync(8)


歴史

     fsync() 関数は 4.2BSD で登場しました。

FreeBSD 4.4                      June 4, 1993                      FreeBSD 4.4

ABELNET VPSサービス