fsync

fsync

fsync函數同步內存中所有已修改的文件數據到儲存設備。

頭文件


函數原型


int fsync(int fd);

說明


參數fd是該進程打開來的文件描述符。函數成功執行時,返回0。失敗返回-1,errno被設為以下的某個值
EBADF:文件描述詞無效
EIO :讀寫的過程中發生錯誤
EROFS, EINVAL:文件所在的文件系統不支持同步
調用 fsync 可以保證文件的修改時間也被更新。fsync 系統調用可以使您精確的強制每次寫入都被更新到磁碟中。您也可以使用同步(synchronous)I/O 操作打開一個文件,這將引起所有寫數據都立刻被提交到磁碟中。通過在 open 中指定 O_SYNC 標誌啟用同步I/O。

範例


#include
#include
#include
#include
#include
const char* journal_filename = “journal.log”;
void write_journal_entry (char* entry)
{
int fd = open (journal_filename, O_WRONLY | O_CREAT | O_APPEND, 0660);
write (fd, entry, strlen (entry));
write (fd, “\n”, 1);
fsync (fd);
close (fd);
}