首页 > 编程知识 正文

fact函数如何调用,linux拷贝文件如何sync吗

时间:2023-05-05 14:37:18 阅读:171185 作者:1620

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

功能说明:

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

使用方法:

包括unistd.h

intfsync(intFD );

参数:

文件描述符。

返回说明:

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

无效的文件描述符

EIO:读写时发生错误

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

强制将系统缓存写入文件同步和fsync函数、fflush和fsync之间的联系和差异。 2010-05-10-11:25在以前的U N I X实现中,内核中有缓冲存储器,大多数磁盘I/O都是通过缓存完成的。 写入数据时

导航到文件时,内核通常首先将数据复制到缓存中。 如果缓存未满,则不输出。

排队,但要等到它已满,或者如果内核需要回收缓存以存储其他磁盘块数据,请排队缓存

进入输出队列并到达队列标头后,将执行实际的输入和输出。 这样的输出模式称为延迟光

(时延照明) (巴赫[ 19 ]8)第三章详细讨论了时延照明。 延迟写入会减少磁盘的读取和写入次数

第四章文件和内容8.7

下载

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

如果系统发生故障,此延迟可能会导致文件更新丢失。 为了确保磁盘上的实际文件系统很慢

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

包括unistd.h

voidsync(void );

intfsync(intfIledes );

返回:如果成功,则返回0;如果错误,则返回-1

S y n c只需将所有已修改块的缓存排队并返回。 不等待实际的输入输出操作结束。

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

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

函数f s y n c仅引用在文件描述符f i l e d e s中指定的一个文件。 等待输入输出结束后返回。 F s y n c can

在APP (如数据库)中,确保更改的数据块立即写入磁盘。 将f s y n c与o s y n c进行比较

慢(见第三节)。 1 )调用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接受参数文件*。 flush (文件*; 如果fsync接受,则这是Int文件描述符。 fsync(intFD ); 3 .函数fflush:将C库中的缓冲区调用write函数写入光盘[实际上是写入内核缓冲区]。 Fsync:是将内核缓冲区笔刷到磁盘。

C库缓冲区-fflush-内核缓冲区- fsync-磁盘

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

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。