Top > C言語 > fsync


リニューアル

サイトリニューアル中です。本ページは以下URLへ移動しました。
Prog.さな雑記

関数仕様

機能
バッファキャッシュが持っているファイルの内容をストレージデバイス上のものと同期させる
書式
すべてを展開すべてを収束
  1
  2
  3
 
 
 
#include <unistd.h>
 
int fsync (int fd);
引数
fd : fsync を行うファイルのファイルディスクリプタ
戻り値
 0 : fsync の実行に成功
-1 : エラーが発生

注意

fsync は引数 fd のファイルディスクリプタで指定したファイルについて、個別に sync 動作を行う。 ただし、ファイルが存在しているディレクトリのエントリがディスクへ書き込まれたことを保証する わけではない。保証するためには、明示的にそのディレクトリのファイルディスクリプタ に対しても fsync する必要がある。

サンプル

すべてを展開すべてを収束
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 
 
 
 
 
 
 
 
 
 
 
-
|
|
|
|
|
-
|
!
|
|
|
|
|
-
|
|
!
|
|
-
|
|
!
|
|
|
!
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>
 
#define TMP_FILE_PATH "./tmp.dat"
 
int
main (void)
{
  int fd, size;
  char buf[14];
 
  fd = open (TMP_FILE_PATH, (O_RDWR | O_CREAT), 0664); 
  if (fd < 0)
    {
      return -1;
    }
 
  sprintf (buf, "Hello world!!");
 
  size = write (fd, buf, sizeof (buf));
  if (size != sizeof (buf))
    {
      close (fd);
      return -1;
    }
 
  if (fsync (fd) < 0)
    {
      close (fd);
      return -1;
    }
 
  close (fd);
  return 0;
}



リロード   凍結解除 コピー 名前変更   ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
Last-modified: Sun, 10 Oct 2021 04:39:39 UTC (713d)