我需要将 bytes1
写入 file1
并将 bytes2
写入 file2
并确保在写入过程中不会捕获 no space left
异常。
或者也许有人知道 SQL 数据库如何实现其文件的完整性?
最佳答案
我找到了一种实现事务的方法,但不知道这种方法的陷阱。关键元素是truncate系统调用将允许我们实现回滚逻辑。这是一个伪代码:
file1Pos = file1.tell()
file2Pos = file2.tell()
err = file1.write(bytes1)
if err != nil {
// rollback to previous position
file1.truncate(file1Pos)
// The file offset is not changed after truncation
file1.seek(file1Pos, SEEK_SET)
}
err = file2.write(bytes2)
if err != nil {
file1.truncate(file1Pos)
file1.seek(file1Pos, SEEK_SET)
file2.truncate(file2Pos)
file2.seek(file2Pos, SEEK_SET)
}
关于linux - 如何在linux上实现写事务?全部写入或不执行任何操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51042622/