广州北大青鸟计算机职业培训学校
互联网技术培训、软件技术培训、大数据培训、云计算培训、数据分析培训信息网
当前位置:网站首页 > 计算机学校 > 湛江计算机学校 > 正文

Linux系统调用fsync函数详解_湛江网络Linux技术

作者:admin发布时间:2020-11-25分类:湛江计算机学校浏览:1260


导读:Linux系统调用fsync函数的功能描述:  同步内存中所有已修改的文件数据到储存设备。  用法:  #include  intfsync(intfd);  参数:  fd:...

Linux系统调用fsync函数的功能描述:

  同步内存中所有已修改的文件数据到储存设备。

  用法:

  #include

  int fsync(int fd);

  参数:

  fd:文件描述词。

  返回说明:

  成功执行时,返回0。失败返回-1,errno被设为以下的某个值

  EBADF: 文件描述词无效

  EIO : 读写的过程中发生错误

  EROFS, EINVAL:文件所在的文件系统不支持同步

  强制把系统缓存写入文件sync和fsync函数,, fflush和fsync的联系和区别2010-05-10 11:25传统的UIX实现在内核中设有缓冲存储器,大多数磁盘I / O都通过缓存进行。当将数据写

  到文件上时,通常该数据先由内核复制到缓存中,如果该缓存尚未写满,则并不将其排入输出队列,而是等待其写满或者当内核需要重用该缓存以便存放其他磁盘块数据时,再将该缓存排入输出队列,然后待其到达队首时,才进行实际的I / O操作。这种输出方式被称之为延迟写。


  延迟写减少了磁盘读写次数,但是却降低了文件内容的更新速度,使得欲写到文件中的数据在一段时间内并没有写到磁盘上。当系统发生故障时,这种延迟可能造成文件更新内容的丢失。为了保证磁盘上实际文件系统与缓存中内容的一致性,UNIX系统提供了sync和fsync两个系统调用函数。

  #include

  void sync(void);

  int fsync(intf i l e d e s) ;

  返回:若成功则为0,若出错则为-1

  s y n c只是将所有修改过的块的缓存排入写队列,然后就返回,它并不等待实际I / O操作结束。

  系统精灵进程(通常称为u p d a t e )一般每隔3 0秒调用一次s y n c函数。这就保证了定期刷新内

  核的块缓存。命令s y n c ( 1 )也调用s y n c函数。

  函数fsync只引用单个文件,它等待I / O结束,然后返回。f s y n c可用于数据库这样的应用程序,它确保修改过的块立即写到磁盘上。比较一下fsync和O _ SYNC标志。当调用f s y n c时,它更新文件的内容,而对于O _ SYNC,则每次对文件调用write函数时就更新文件的内容。


fflush和fsync的联系和区别

  1. 提供者fflush是libc.a中提供的方法,fsync是系统提供的系统调用。

  2. 原形fflush接受一个参数FILE *.fflush(FILE *);fsync接受的时一个Int型的文件描述符。fsync(int fd);3.功能fflush:是把C库中的缓冲调用write函数写到磁盘[其实是写到内核的缓冲区]。fsync:是把内核缓冲刷到磁盘上。

  c库缓冲-----fflush---------〉内核缓冲--------fsync-----〉磁盘


湛江计算机学校排行
标签列表
网站分类
文章归档
最近发表