程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> Linux C 文件與目錄4 將緩沖區數據寫入磁盤,linux緩沖區

Linux C 文件與目錄4 將緩沖區數據寫入磁盤,linux緩沖區

編輯:C++入門知識

Linux C 文件與目錄4 將緩沖區數據寫入磁盤,linux緩沖區


將緩沖區數據寫入磁盤

  所謂緩沖區,是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);

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved