当前在线人数14906
首页 - 分类讨论区 - 电脑网络 - 葵花宝典版 - 同主题阅读文章

此篇文章共收到打赏
0

  • 10
  • 20
  • 50
  • 100
您目前伪币余额:0
未名交友
[更多]
[更多]
保存文件之后重启需要sync吗?
[版面:葵花宝典][首篇作者:bihai] , 2020年07月31日22:46:24 ,392次阅读,14次回复
来APP回复,赚取更多伪币 关注本站公众号:
[分页:1 ]
bihai
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 1 ]

发信人: bihai (学得不好), 信区: Programming
标  题: 保存文件之后重启需要sync吗?
发信站: BBS 未名空间站 (Fri Jul 31 22:46:24 2020, 美东)

我们有个文件保存一些信息,有一些是重启之前产生的。系统是用flash memory,那么
,一般来讲,是不是写完之后还要什么sync,要不然怎么保证文件到flash里面呢?

好几次,我看到写已经发生了,但是重启后,文件里面没有。这里面有这么几个问题,

第一,写文件的函数结束后,文件写进去没有?在内存里,是同步还是异步的?

第二,到了电路板的flash memory里面了,然后重启,这个文件到底能不能完成对应的
电子的移动?因为重启了,这个时候如果正在写入,甚至擦除,不就没了吗?

有人说第二个情况,时间很短。那么,第一个是不是很长?有的时候写文件后5秒重启
,里面没有新写的东西。如果用sync,那么在C++里面怎么用?
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 2601:647:4200:6]

 
sanwadie
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 2 ]

发信人: sanwadie (三娃爹), 信区: Programming
标  题: Re: 保存文件之后重启需要sync吗?
发信站: BBS 未名空间站 (Sat Aug  1 16:22:38 2020, 美东)

调用一下 fsync 系统函数,或者设置一下打开文件的 sync io flags

c++ 不熟,十几年没玩c了,不保证正确。

【 在 bihai (学得不好) 的大作中提到: 】
: 我们有个文件保存一些信息,有一些是重启之前产生的。系统是用flash memory,那么
: ,一般来讲,是不是写完之后还要什么sync,要不然怎么保证文件到flash里面呢?
: 好几次,我看到写已经发生了,但是重启后,文件里面没有。这里面有这么几个问题,
: 第一,写文件的函数结束后,文件写进去没有?在内存里,是同步还是异步的?
: 第二,到了电路板的flash memory里面了,然后重启,这个文件到底能不能完成对应的
: 电子的移动?因为重启了,这个时候如果正在写入,甚至擦除,不就没了吗?
: 有人说第二个情况,时间很短。那么,第一个是不是很长?有的时候写文件后5秒重启
: ,里面没有新写的东西。如果用sync,那么在C++里面怎么用?



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 198.]

 
guvest
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 3 ]

发信人: guvest (我爱你老婆Anna), 信区: Programming
标  题: Re: 保存文件之后重启需要sync吗?
发信站: BBS 未名空间站 (Sat Aug  1 18:43:19 2020, 美东)

如果是MCU,
有的芯片或者电路板提供有axiom write什么的.也可以找厂家提供的例子程序。


【 在 sanwadie(三娃爹) 的大作中提到: 】
<br>: 调用一下 fsync 系统函数,或者设置一下打开文件的 sync io flags
<br>: c   不熟,十几年没玩c了,不保证正确。
<br>

--
※ 修改:·guvest 於 Aug  1 18:44:42 2020 修改本文·[FROM: 76.]
※ 来源:· 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 76.]

 
digua
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 4 ]

发信人: digua (姚之FAN), 信区: Programming
标  题: Re: 保存文件之后重启需要sync吗?
发信站: BBS 未名空间站 (Sat Aug  1 22:56:08 2020, 美东)

C程序,有OS?如果是,在程序退出前调用fflush()函数,OS会保证程序退出之前或
系统重启之前,把所有数据写到存贮系统中。

【 在 bihai (学得不好) 的大作中提到: 】
: 我们有个文件保存一些信息,有一些是重启之前产生的。系统是用flash memory,那么
: ,一般来讲,是不是写完之后还要什么sync,要不然怎么保证文件到flash里面呢?
: 好几次,我看到写已经发生了,但是重启后,文件里面没有。这里面有这么几个问题,
: 第一,写文件的函数结束后,文件写进去没有?在内存里,是同步还是异步的?
: 第二,到了电路板的flash memory里面了,然后重启,这个文件到底能不能完成对应的
: 电子的移动?因为重启了,这个时候如果正在写入,甚至擦除,不就没了吗?
: 有人说第二个情况,时间很短。那么,第一个是不是很长?有的时候写文件后5秒重启
: ,里面没有新写的东西。如果用sync,那么在C++里面怎么用?

--
※ 修改:·digua 於 Aug  1 22:59:27 2020 修改本文·[FROM: 73.]
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 73.]

 
netghost
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 5 ]

发信人: netghost (Up to Isomorphism), 信区: Programming
标  题: Re: 保存文件之后重启需要sync吗?
发信站: BBS 未名空间站 (Sun Aug  2 11:45:47 2020, 美东)

寫返回,取決你調什麼函數,在什麼層次上面調的?
C standard library? C syscall? C++? Python? 都不一樣。

不過寫文件結束之後,如果你的操作系統正常重啓(正常是說重啓前調了sync),你不應
該不會看見文件沒有改動。

至於你第二個問題,flash memory是ssd? 還是raw nand? 這些都會有影響。如果硬件
driver沒有問題,你在sync之後,即使重啓,也應該可以看到文件變了。

你這個感覺是嵌入式設備,那麼最先你應該看的是重啓時候,系統腳本是不是調用了
sync。
【 在 bihai (学得不好) 的大作中提到: 】
: 我们有个文件保存一些信息,有一些是重启之前产生的。系统是用flash memory,那么
: ,一般来讲,是不是写完之后还要什么sync,要不然怎么保证文件到flash里面呢?
: 好几次,我看到写已经发生了,但是重启后,文件里面没有。这里面有这么几个问题,
: 第一,写文件的函数结束后,文件写进去没有?在内存里,是同步还是异步的?
: 第二,到了电路板的flash memory里面了,然后重启,这个文件到底能不能完成对应的
: 电子的移动?因为重启了,这个时候如果正在写入,甚至擦除,不就没了吗?
: 有人说第二个情况,时间很短。那么,第一个是不是很长?有的时候写文件后5秒重启
: ,里面没有新写的东西。如果用sync,那么在C++里面怎么用?



--

※ 来源:·BBS 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 99.]

 
netghost
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 6 ]

发信人: netghost (Up to Isomorphism), 信区: Programming
标  题: Re: 保存文件之后重启需要sync吗?
发信站: BBS 未名空间站 (Sun Aug  2 11:50:33 2020, 美东)

這個做法是不對的。fflush()是C標準庫函數,只負責flush standard library流I/O的
buffer,還需要調用fsync()才能保證落盤。
【 在 digua (姚之FAN) 的大作中提到: 】
: 标  题: Re: 保存文件之后重启需要sync吗?
: 发信站: BBS 未名空间站 (Sat Aug  1 22:56:08 2020, 美东)
:
: C程序,有OS?如果是,在程序退出前调用fflush()函数,OS会保证程序退出之前或
: 系统重启之前,把所有数据写到存贮系统中。
:
: 【 在 bihai (学得不好) 的大作中提到: 】
: : 我们有个文件保存一些信息,有一些是重启之前产生的。系统是用flash memory,
那么
: : ,一般来讲,是不是写完之后还要什么sync,要不然怎么保证文件到flash里面呢?
: : 好几次,我看到写已经发生了,但是重启后,文件里面没有。这里面有这么几个问
题,
: : 第一,写文件的函数结束后,文件写进去没有?在内存里,是同步还是异步的?
: : 第二,到了电路板的flash memory里面了,然后重启,这个文件到底能不能完成对
应的
: : 电子的移动?因为重启了,这个时候如果正在写入,甚至擦除,不就没了吗?
: : 有人说第二个情况,时间很短。那么,第一个是不是很长?有的时候写文件后5秒
重启
: : ,里面没有新写的东西。如果用sync,那么在C++里面怎么用?
:
: --
: ※ 修改:·digua 於 Aug  1 22:59:27 2020 修改本文·[FROM: 73.]
: ※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 73.]



--

※ 来源:·BBS 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 99.]

 
digua
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 7 ]

发信人: digua (姚之FAN), 信区: Programming
标  题: Re: 保存文件之后重启需要sync吗?
发信站: BBS 未名空间站 (Sun Aug  2 12:23:51 2020, 美东)

OS如果自己重启,会把I/O buffer的内容写回存贮设备的。不过,用fsync强制写一下
确实好一些,防止外部掉电的情况。

【 在 netghost (Up to Isomorphism) 的大作中提到: 】
: 這個做法是不對的。fflush()是C標準庫函數,只負責flush standard library流I/O的
: buffer,還需要調用fsync()才能保證落盤。

--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 73.]

 
digua
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 8 ]

发信人: digua (姚之FAN), 信区: Programming
标  题: Re: 保存文件之后重启需要sync吗?
发信站: BBS 未名空间站 (Sun Aug  2 12:31:34 2020, 美东)

Flash memory写入的时间可能会超过5秒。如果你说的重启是外部掉电后的重启,用纯
软件的方法,是不能保证的。简单的解决办法,是给系统加一个小的备用电池。如果系
统掉电了,备用电池保证OS能完成对存贮设备的写入。

【 在 bihai (学得不好) 的大作中提到: 】
: 第二,到了电路板的flash memory里面了,然后重启,这个文件到底能不能完成对应的
: 电子的移动?因为重启了,这个时候如果正在写入,甚至擦除,不就没了吗?
: 有人说第二个情况,时间很短。那么,第一个是不是很长?有的时候写文件后5秒重启
: ,里面没有新写的东西。如果用sync,那么在C++里面怎么用?

--
※ 修改:·digua 於 Aug  2 12:34:10 2020 修改本文·[FROM: 73.]
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 73.]

 
netghost
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 9 ]

发信人: netghost (Up to Isomorphism), 信区: Programming
标  题: Re: 保存文件之后重启需要sync吗?
发信站: BBS 未名空间站 (Sun Aug  2 12:42:24 2020, 美东)

如果是embeded的soc,可能並沒有x86的reboot 過程,僅僅就是reset而已,並不會保
證數據落盤。
【 在 digua (姚之FAN) 的大作中提到: 】
: OS如果自己重启,会把I/O buffer的内容写回存贮设备的。不过,用fsync强制写一下
: 确实好一些,防止外部掉电的情况。



--

※ 来源:·BBS 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 99.]

 
guvest
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 10 ]

发信人: guvest (我爱你老婆Anna), 信区: Programming
标  题: Re: 保存文件之后重启需要sync吗?
发信站: BBS 未名空间站 (Sun Aug  2 15:14:04 2020, 美东)

如果是嵌入式,楼主要查说明书,或者联系公司找例子程序。有的芯片
有很tricky的掉电保护软硬件技术棧,我以前参与过此类项目。


【 在 netghost(Up to Isomorphism) 的大作中提到: 】
<br>: 如果是embeded的soc,可能並沒有x86的reboot 過程,僅僅就是reset而
已,並
不會保
<br>: 證數據落盤。
<br>


--
※ 修改:·guvest 於 Aug  2 15:15:14 2020 修改本文·[FROM: 76.]
※ 来源:· 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 76.]

 
bihai
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 11 ]

发信人: bihai (学得不好), 信区: Programming
标  题: Re: 保存文件之后重启需要sync吗?
发信站: BBS 未名空间站 (Sun Aug  2 22:42:40 2020, 美东)

大家说得都恨到点子上

现在发现,重启前代码没有调flush,虽然平时时不时调用,所以出现丢数据问题。系
统不是Linux,可能应该在系统里加上把内存所有的数据写道Flash磁盘?这个系统重启
的功能还在开发中,可能缺少功能。

【 在 bihai (学得不好) 的大作中提到: 】
: 我们有个文件保存一些信息,有一些是重启之前产生的。系统是用flash memory,那么
: ,一般来讲,是不是写完之后还要什么sync,要不然怎么保证文件到flash里面呢?
: 好几次,我看到写已经发生了,但是重启后,文件里面没有。这里面有这么几个问题,
: 第一,写文件的函数结束后,文件写进去没有?在内存里,是同步还是异步的?
: 第二,到了电路板的flash memory里面了,然后重启,这个文件到底能不能完成对应的
: 电子的移动?因为重启了,这个时候如果正在写入,甚至擦除,不就没了吗?
: 有人说第二个情况,时间很短。那么,第一个是不是很长?有的时候写文件后5秒重启
: ,里面没有新写的东西。如果用sync,那么在C++里面怎么用?



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 2601:647:4200:6]

 
guvest
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 12 ]

发信人: guvest (我爱你老婆Anna), 信区: Programming
标  题: Re: 保存文件之后重启需要sync吗?
发信站: BBS 未名空间站 (Mon Aug  3 01:01:21 2020, 美东)

所有内存的都写flash没必要吧。你自己写个atomWrite(),关键数据调用下即可。

【 在 bihai (学得不好) 的大作中提到: 】
: 大家说得都恨到点子上
: 现在发现,重启前代码没有调flush,虽然平时时不时调用,所以出现丢数据问题。系
: 统不是Linux,可能应该在系统里加上把内存所有的数据写道Flash磁盘?这个系统重启
: 的功能还在开发中,可能缺少功能。



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 76.]

 
netghost
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 13 ]

发信人: netghost (Up to Isomorphism), 信区: Programming
标  题: Re: 保存文件之后重启需要sync吗?
发信站: BBS 未名空间站 (Mon Aug  3 12:08:15 2020, 美东)

其實沒有OS保護,本來硬件上面這些東西實現就死和千變萬化的,都得看具體手冊來決
定。


【 在 guvest (我爱你老婆Anna) 的大作中提到: 】
: 如果是嵌入式,楼主要查说明书,或者联系公司找例子程序。有的芯片
: 有很tricky的掉电保护软硬件技术棧,我以前参与过此类项目。
: <br>: 如果是embeded的soc,可能並沒有x86的reboot 過程,僅僅就是reset而
: 已,並
: 不會保
: <br>: 證數據落盤。
: <br>



--

※ 来源:·BBS 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 99.]

 
sanwadie
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 14 ]

发信人: sanwadie (三娃爹), 信区: Programming
标  题: Re: 保存文件之后重启需要sync吗?
发信站: BBS 未名空间站 (Mon Aug  3 13:28:01 2020, 美东)

还记得大学时代玩SunOS,不用reboot,shutdown 关系统,发两个 sync,一个 halt
命令就行。

所有类unix系统都差不多,看看你们的系统关机重启是否做了同样的事情。

【 在 bihai (学得不好) 的大作中提到: 】
: 大家说得都恨到点子上
: 现在发现,重启前代码没有调flush,虽然平时时不时调用,所以出现丢数据问题。系
: 统不是Linux,可能应该在系统里加上把内存所有的数据写道Flash磁盘?这个系统重启
: 的功能还在开发中,可能缺少功能。




--
☆ 发自 iPhone 买买提 1.24.11
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 198.]

 
guvest
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 15 ]

发信人: guvest (我爱你老婆Anna), 信区: Programming
标  题: Re: 保存文件之后重启需要sync吗?
发信站: BBS 未名空间站 (Mon Aug  3 23:01:11 2020, 美东)

跟软件产品设计的思路差不多。芯片的
掉电系统保护这部分,可以卖卖feature,新建立几个buzz words 。或者旧瓶装新酒,
改一点。


【 在 netghost(Up to Isomorphism) 的大作中提到: 】
<br>: 其實沒有OS保護,本來硬件上面這些東西實現就死和千變萬化的,都得看
具體手
冊來決
<br>: 定。
<br>


--
※ 修改:·guvest 於 Aug  3 23:03:05 2020 修改本文·[FROM: 76.]
※ 来源:· 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 76.]

[分页:1 ]
[快速返回] [ 进入葵花宝典讨论区] [返回顶部]
回复文章
标题:
内 容:

未名交友
将您的链接放在这儿

友情链接


 

Site Map - Contact Us - Terms and Conditions - Privacy Policy

版权所有,未名空间(mitbbs.com),since 1996