write和fwrite的区别

178 views
Skip to first unread message

杨博东

unread,
Apr 1, 2017, 1:55:18 PM4/1/17
to 西邮Linux兴趣小组
Hi,list
      我想了解write和fwrite的差别,我目前做了个实验如下(fwrite在多线程写数据会出现数据交叉情况,但write不会):

      我想了解它们有关缓冲的具体区别以及如果正在写数据,断电后是否会丢失的问题,希望大家能解答我的疑惑,ths.

黑铁柱

unread,
Apr 18, 2017, 4:30:02 AM4/18/17
to 杨博东, 西邮Linux兴趣小组
断电后只要不是同步写入文件,都会丢数据,起码缓存的都要丢的

--
--
要退订此论坛请发邮件至 xiyoulinux-unsubscribe@googlegroups.com
更多选项: http://groups.google.com/group/xiyoulinux?hl=zh-CN
提问前建议您阅读(提问的智慧):http://www.xiyoulinux.org/blog/?p=64
---
您收到此邮件是因为您订阅了Google网上论坛上的“西邮Linux兴趣小组”群组。
要退订此群组并停止接收此群组的电子邮件,请发送电子邮件到xiyoulinux+unsubscribe@googlegroups.com
要查看更多选项,请访问https://groups.google.com/d/optout

Condy Chen

unread,
Dec 19, 2018, 12:31:49 PM12/19/18
to xiyou...@googlegroups.com
忘记 cc 组了

---------- Forwarded message ---------
From: Condy Chen <cond...@gmail.com>
Date: Thu, Dec 20, 2018 at 1:29 AM
Subject: Re: [XiYouLinux] write和fwrite的区别
To: 杨博东 <yangbod...@gmail.com>


    以 ext4 为例,write 写数据到文件没有交叉是因为会锁 inode 元信息(非 AIO 情况下)。然后根据是否有 O_DIRECT flag 分成直写与缓存写。写过程中提交信息至 jbd2,直到有 commit 时会认为是一个原子操作。数据恢复也是志 jbd2 日志来恢复的。

    而 fwrite 是 write 的封装,多一层缓存就会多一份数据不能及时写到磁盘的风险。

    参考:

--
--
要退订此论坛请发邮件至 xiyoulinux-...@googlegroups.com

更多选项: http://groups.google.com/group/xiyoulinux?hl=zh-CN
提问前建议您阅读(提问的智慧):http://www.xiyoulinux.org/blog/?p=64
---
您收到此邮件是因为您订阅了Google网上论坛上的“西邮Linux兴趣小组”群组。
要退订此群组并停止接收此群组的电子邮件,请发送电子邮件到xiyoulinux+...@googlegroups.com
要查看更多选项,请访问https://groups.google.com/d/optout
Reply all
Reply to author
Forward
0 new messages