- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一些使用 fsync()
系统调用来确保文件持久保存到磁盘的软件。我之前已经这样做过,并且我知道您需要注意的各种“陷阱”(即,在替换文件时,您需要 fsync()
该文件,发出 rename()
,然后 fsync()
包含的目录。编写将文件持久写入磁盘的软件就可以了。
测试软件是另一回事。我想验证它在断电等情况下是否能正常运行。我的 body react 还不错,但还不足以拔掉两个CPU指令之间的电源线。
我应该如何测试写入磁盘的 C 程序的持久性?
(正如标题所暗示的,我假设您使用某种类似调试器的软件,可能使用 ptrace() 来自动终止特定文件/行处的程序,如所列在可执行文件的调试信息中。)
最佳答案
请做好准备,如果发生不可预见的随机事件(例如正常情况下停电),您将无法将 100% 的数据保存到磁盘中。然而,可以通过多种方式提高概率 - 例如以 block 的形式写入磁盘。 block 的大小应确保如果未将其保存在磁盘中,则其某些部分可以在重新启动电源后恢复或安全地忽略。chunk的大小还取决于磁盘缓存,这将确保数据快速写入以及程序读取数据流的速率。可以通过设计硬件/软件来实现数据恢复,以便在断电的情况下,系统中有某种备用电源。该设计将允许系统有足够的时间向软件发出信号以完成剩余数据的保存(如果有),或者数据保留存储在专门用于此目的的 RAM 中,直到 CPU 的主电源恢复。有几种测试想法,其中之一可以是在线程中执行磁盘写入操作,并根据您的要求从主线程循环启动/终止线程。
关于c - 通过在文件/行自动终止 C 程序来测试耐久性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52751125/
我是一名优秀的程序员,十分优秀!