Người dùng kết quả của tệp phụ thuộc vào những gì trình soạn thảo làm. Một số trình soạn thảo lưu tệp bằng cách cắt bớt tệp và ghi lên tệp (mà không thay đổi nút). Và một số biên tập viên đổi tên tập tin vào một tên khác ( file
để file~
là bình thường), và tạo một file mới với tên của bản gốc. Sửa đổi tệp gốc giữ cho chủ sở hữu giống nhau, tạo một tệp mới làm cho tệp mới được sở hữu bởi UID của quá trình tạo.
Của các biên tập viên tôi có trên Debian, nano
và joe
cũng nvi
và vim
(phiên bản tối thiểu trong vim-tiny
) dường như để ghi đè tại chỗ. Mặc dù tôi cho rằng vim
và Emacs có thể cấu hình trong những gì họ làm.
Stephen bình luận về cập nhật nguyên tử . Vấn đề với việc tạo lại tại chỗ là tệp bị cắt ngắn đến 0, sau đó được viết. Một quy trình khác có thể mở và đọc nó trước khi tất cả dữ liệu được viết.
Một bản cập nhật nguyên tử sẽ được thực hiện bằng cách tạo phiên bản mới như nói file.new
, sau đó đổi tên file.new
thành file
. Để lại một tập tin sao lưu, người ta có thể tạo file.new
, liên kết file
đến file~
và sau đó đổi tên file.new
để file
. Việc đổi tên là nguyên tử ở chỗ bất kỳ quá trình nào truy cập tệp theo tên đều là phiên bản cũ hoặc phiên bản mới, không phải bất cứ điều gì ở giữa. Tất cả các xử lý tệp đang mở tất nhiên sẽ trỏ đến tệp được giữ mở, đưa ra một cái nhìn nhất quán về tệp.
Từ quan điểm cấp phép tệp , lưu trên cùng một tệp (inode) yêu cầu quyền truy cập ghi vào chính tệp (nhưng không phải thư mục), đổi tên tệp và tạo tệp mới yêu cầu quyền truy cập ghi vào thư mục (nhưng không phải vào tệp gốc ).
(Đổi tên và tạo lại cũng là một cách sửa lỗi quyền của tệp trong trường hợp ai đó tạo hoặc sửa đổi tệp trong thư mục dùng chung, nhưng quên cung cấp quyền truy cập ghi vào nhóm.)