Emacs 修改文件后,修改内容可能无法在后续断电或存储介质故障中保留, 原因有二,均与效率相关。其一,操作系统可能将写入的数据与 已存储在辅助存储其他位置的数据做别名映射,直到其中一个文件被后续修改; 若辅助存储上的唯一副本因介质故障丢失,两个文件都会损坏。 其二,操作系统可能不会立即将数据写入辅助存储, 若此时断电或发生介质故障,数据将会丢失。
尽管通过适当配置的系统可以在很大程度上避免这两类故障,
但这类系统通常成本更高或效率更低。在低端系统中,
要在介质故障后保留数据,可将文件复制到不同设备;
要在断电后保留数据(或立即获知介质故障),
可使用 write-region 函数,并将变量
write-region-inhibit-fsync 设置为 nil。
该变量通常为 t,因为这能显著提升性能;
但如果在低端系统上使用 Emacs 实现可抵御断电的类数据库事务,
将其临时绑定为 nil 会更合理。
See 写入文件。
在部分平台上,Emacs 修改文件后,其他进程可能不会立即收到变更通知。
将 write-region-inhibit-fsync 设为 nil
可能会加快此类通知,但不提供保证。