リニューアル
サイトリニューアル中です。本ページは以下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;
}
|