將緩衝區數據寫入磁碟 所謂緩衝區,是Linux系統對文件的一種處理方式。在對文件進行寫操作時,並沒有立即把數據寫入到磁碟,而是把數據寫入到緩衝區。如果需要把數據立即寫入到磁碟,可以使用sync函數。用這個函數強制寫入緩衝區數據的的好處是保證數據同步。 函數原型: int sync(void); 這個
將緩衝區數據寫入磁碟
所謂緩衝區,是Linux系統對文件的一種處理方式。在對文件進行寫操作時,並沒有立即把數據寫入到磁碟,而是把數據寫入到緩衝區。如果需要把數據立即寫入到磁碟,可以使用sync函數。用這個函數強制寫入緩衝區數據的的好處是保證數據同步。
函數原型:
int sync(void);
這個函數會對當前程式打開的所有文件進行處理,將緩衝區的內容寫入到文件。函數沒有參數,返回值為0。這個函數一般不會產生錯誤。
頭文件:
#include(unistd.h)
用法:
fd = open(path , O_WRONLY|O_CREAT|O_TRUNC , 0766);
if(fd != -1)
{
printf("opened file %s .\n" , path);
}
else
{
printf("can't open file %s.\n" , path);
printf("errno: %d\n" , errno);
printf("ERR : %s\n" , strerror(errno));
}
write(fd , s , sizeof(s));
sync(); //將緩衝區的數據寫入磁碟
printf("sync function done.\n");
close(fd);
fsync
函數fsync的作用是將緩衝區的數據寫入到磁碟。與sync不同的是,這個函數可以指定打開文件的編號,執行以後會返回一個值。
函數原型:
int fsync(int fd);
頭文件:
#include(unistd.h)
返回值:如果函數執行成功則返回0,否則返回-1。
fd = open(path , O_WRONLY|O_CREAT|O_TRUNC , 0766);
if(fd != -1)
{
printf("opened file %s .\n" , path);
}
else
{
printf("can't open file %s.\n" , path);
printf("errno: %d\n" , errno);
printf("ERR : %s\n" , strerror(errno));
}
write(fd , s , sizeof(s));
if(fsync(fd) == 0)
{
printf("fsync function done.\n");
}
else
{
printf("fsync function failed.\n");
}
close(fd);