Usually, applications perform atomic saves either by renaming the old file and writing the new file in place, or by writing a temp file and then replacing the old file with the new temp file. Which of these does emacs do? I found this link to a patch discussion, but I don't understand what is going on.
The answer is that it depends on all kinds of factors.
First, note that "renaming the old file and writing the new file in place" is not atomic.
Emacs can save in various ways:
- rename old file + write in place (non-atomic, breaks links).
- don't rename, write over existing file (non-atomic, doesn't break links).
- write to new file, then rename it (atomic, breaks links).
Note that "break links" also implies that the new file may have different permissions/owner/...
In most cases, Emacs will use the second approach (in order to preserve links and permissions). But if it needs to make a backup of the file (according to
make-backup-files), then it will often use the first approach (where the rename is used to create the backup), although this depends on
backup-by-copying (as well as other variables with names that start with
backup-by-copying-when-) as well as