標準/拡張機能 | C/C++ | 依存項目 |
---|---|---|
POSIX.1 |
両方 |
#define _POSIX1_SOURCE 2
#include <unistd.h>
int fsync(int fildes);
オープン・ファイル記述子 fildes によって指示されたファイル のデータすべてを、fildes に関連したストレージに転送 します。転送が完了するまで、またはエラーを検出するまでは、fsync() は 戻りません。
fsync() は、正常終了時には 0 を戻します。
⁄* CELEBF48 *⁄
#define _POSIX_SOURCE
#include <fcntl.h>
#include <sys⁄stat.h>
#include <sys⁄types.h>
#include <unistd.h>
#undef _POSIX_SOURCE
#include <stdio.h>
#include <stdlib.h>
#define mega_string_len 250000
main() {
char *mega_string;
int fd, ret;
char fn[]="fsync.file";
if ((mega_string = (char*) malloc(mega_string_len)) == NULL)
perror("malloc() error");
else if ((fd = creat(fn, S_IWUSR)) < 0)
perror("creat() error");
else {
memset(mega_string, 's', mega_string_len);
if ((ret = write(fd, mega_string, mega_string_len)) == -1)
perror("write() error");
else {
printf("write() wrote %d bytes¥n", ret);
if (fsync(fd) != 0)
perror("fsync() error");
else if ((ret = write(fd, mega_string, mega_string_len)) == -1)
perror("write() error");
else
printf("write() wrote %d bytes¥n", ret);
}
close(fd);
unlink(fn);
}
}
write() wrote 250000 bytes
write() wrote 250000 bytes