我有10个字节的数据写入文件,在我的程序将9个字节和7个位写入硬盘后,如果断电,我可以在电量到达后从该文件中读取多少字节? 9个字节还是10个字节?
答案 0 :(得分:0)
你什么都不能说。这里有太多的抽象层次。您的程序经常缓冲,OS缓冲区,芯片组缓冲区,驱动器本身缓冲区,并且在某些时候将写入数据。
当您通过类似fsync
之类的内容要求对数据进行硬同步时,您所获得的是至少您的数据的确认,并不保证没有其他内容
此数据需要非零时间才能流过所有这些层,并且物理上最终会在磁盘,SSD或其他方面。如果在此过程中的某个时刻断电并且您没有收到写入确认,则可以安全地假设您不知道写了多少。你必须检查你之前写的任何文件,看看有什么数据。
当您的系统重新启动时,它可能必须从日志中恢复,并且将回滚任何未提交的更改。在您的示例中,实际写入的字节数为零。