- 主题:求教进程关闭时正在写文件的问题
- 最近遇到了疑似进程关闭时正在写文件导致文件系统损坏的问题,
 网上搜了下,好像是有这个可能。
 
 我的问题是:
 1)如何避免这种问题?目前能想到的是,让写文件的处理尽量集中到独立线程中,在析构函数中做处理,要么等写完文件再关闭,要么就提示正在写文件无法关闭请稍后再试。
 2)但是掉电怎么办呢?这个理论上无法彻底解决,能做的只有尽量降低写文件的频次和数据量?
 
 PS:编程语言是C/C++和python
 --
 修改:elephant FROM 114.221.79.*
 FROM 114.221.79.*
 
-  主要还是加强数据鲁棒性吧,确保部分写文件的操作不会影响其他完整数据
 
 【 在 elephant 的大作中提到: 】
 : 最近遇到了疑似进程关闭时正在写文件导致文件系统损坏的问题,
 : 网上搜了下,好像是有这个可能。
 : 我的问题是:
 : ...................
 --
 FROM 222.128.63.59
 
- 掉电,UPS呀
 --
 FROM 60.1.3.*
 
- 不太懂,这个我理解是文件系统的问题。
 例如正在写日志文件的时候掉电了,此时怎么确保不会影响日志文件中已经存在的数据呢?
 
 
 【 在 sweetgun 的大作中提到: 】
 : 主要还是加强数据鲁棒性吧,确保部分写文件的操作不会影响其他完整数据
 :
 --
 FROM 114.221.79.*
 
- UPS是掉电场景的不错方法。
 那么手动关闭进程的场景,大佬有什么好建议吗?
 
 【 在 fanjiyouyi 的大作中提到: 】
 : 掉电,UPS呀
 --
 FROM 114.221.79.*
 
- 捕获退出信号,清理完之后再退出。
 【 在 elephant 的大作中提到: 】
 : UPS是掉电场景的不错方法。
 : 那么手动关闭进程的场景,大佬有什么好建议吗?
 --
 FROM 117.133.52.*
 
- 每次数据写入新文件,当写完后再记录文件里写入完成状态
 
 【 在 elephant 的大作中提到: 】
 : UPS是掉电场景的不错方法。
 : 那么手动关闭进程的场景,大佬有什么好建议吗?
 :
 --
 FROM 60.1.3.*
 
-  比如顺序写出的数据,每条记录有长度标识和结束标识,只写出一半的记录不读就行了;
 后来我采用了BerkeleyDB这样的文件数据库来记录数据,它对于文件写到一半、重新读取的问题明显会处理的比自己撸代码好。
 
 【 在 elephant 的大作中提到: 】
 : 不太懂,这个我理解是文件系统的问题。
 : 例如正在写日志文件的时候掉电了,此时怎么确保不会影响日志文件中已经存在的数据呢?
 --
 FROM 222.128.63.59
 
- 有一类文件系统,可以提供掉电只丢失最后一次写入的内容,而不损坏整个文件的feature,比如LittleFS之类的。
 【 在 elephant 的大作中提到: 】
 : 最近遇到了疑似进程关闭时正在写文件导致文件系统损坏的问题,
 : 网上搜了下,好像是有这个可能。
 : 我的问题是:
 : ...................
 --
 FROM 183.173.112.*
 
- 【 在 elephant 的大作中提到: 】
 : 最近遇到了疑似进程关闭时正在写文件导致文件系统损坏的问题,
 : 网上搜了下,好像是有这个可能。
 : 我的问题是:
 : ...................
 
 程序要做到优雅退出, 如果是服务器或者后台程序, 这是基本要求。
 换句话就是, 在程序退出的时候,需要等待,或者提前终止工作任务,
 耗时不长的, 就等待, 耗时长的, 尽量终止并保持数据一致。
 
 对于断电的问题, 这个可以不在软件的考虑之列,比较,断电终端的位置随机性太大,
 很难做到处处更新逻辑一致性,尽管如此, 对于仅仅数据更新,也可以使用类似数据库写日志的方式, 从而可以redo或者undo, 但这样也会带来磁盘占用额外的容量。
 --
 FROM 115.171.245.*