linux c sync函数,怎么在Linux中调用fsync函数

Linux中如何调用fsync函数?针对这个问题,本文详细介绍了相应的分析和解决方法,希望能帮助更多想解决这个问题的伙伴找到更简单易行的方法。

功能描述:

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

用法:

#包含unistd.h

int fsync(int FD);

参数:

文件描述符。

回到描述:

成功执行后,它返回0。失败返回-1,errno设置为下列值之一

无效的文件描述符

EIO:读写时出错

文件所在的文件系统不支持同步

强行把系统缓存写入文件同步和fsync函数,fflush和fsync的联系和区别。2010-05-10-11:25传统的U N I X实现在内核中有缓冲内存,大部分磁盘I/O都是通过缓存进行的。当写入数据时

当转到一个文件时,数据通常由内核首先复制到缓存中。如果缓存未满,将不会输出。

排队,但等待它被填满或当内核需要重用缓存来存储其他磁盘块数据时,然后将缓存排队

进入输出队列,然后当它到达队列头时,将执行实际的I/O操作。这种输出模式称为延迟写入

(延迟写作)(巴赫[1 9 8 6]第3章详细讨论了延迟写作)。延迟写入减少了磁盘读取和写入的次数,但是

第4章文件和内容8 7

下载

但是降低了文件内容的更新速度,使得要写入文件的数据在一段时间内不会写入磁盘。什么时候

当系统出现故障时,这种延迟可能会导致文件更新丢失。为了保证磁盘上的实际文件系统缓慢

U N I X系统提供了两个系统调用函数:s y n c和f s y n c。

#包含unistd.h

void sync(void);

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

返回:成功时为0,错误时为-1

S y n c只是将所有修改块的缓存排入写队列,然后返回。它不等待实际的输入输出操作结束。

系统向导进程(通常称为u p d a t e)通常每3 0秒调用一次s y n c函数。这确保了内的定期刷新

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

函数f s y n c只引用一个文件(由文件描述符f i l e d e s指定)。它等待输入输出结束,然后返回。F s y n c can

对于数据库等应用程序,它可以确保修改后的数据块立即写入磁盘。比较f s y n c和o s y n c

迟(见第3节。1 3).当调用f s y n c时,它更新文件的内容,而对于o s y n c,它每次都调用w r i t e到文件

函数,文件的内容被更新。

fflush与fsync的联系与区别

[ZZ]http://blog.chinaunix.net/u2/73874/showart_1421917.html

1.provider fflush是libc.a中提供的方法,fsync是系统提供的系统调用。2.原型fflush接受参数FILE *。fflush(FILE *);当fsync接受时,它是一个Int文件描述符。fsync(int FD);3.函数fflush:是把C库中的缓冲区调用write函数写到磁盘上[其实是写到内核的缓冲区]。Fsync:就是把内核缓冲刷到磁盘上。

c库缓冲区-fflush->内核缓冲区-> fsync->磁盘

Linux中如何调用fsync函数这个问题的答案在这里分享。希望以上内容能对大家有所帮助。如果你还有很多疑问,你可以关注微子网络,了解更多。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值