파일 의 결과 사용자 는 편집기의 기능에 따라 다릅니다. 일부 편집기는 파일을 자르고 파일을 덮어 써서 (아이 노드를 변경하지 않고) 저장합니다. 그리고 어떤 편집자는 (다른 이름으로 파일의 이름을 변경 file
에 file~
보통이다), 원래의 이름으로 새 파일을 만듭니다. 원본 파일을 수정하면 소유자가 동일하게 유지되고 새 파일을 만들면 작성 프로세스의 UID가 새 파일을 소유하게됩니다.
편집자 나는 데비안에있는, nano
그리고 joe
뿐만 아니라, nvi
과 vim
(의 최소 버전 vim-tiny
에서 현재 위치에 덮어 쓰기하는 것). 내가 생각하지만 vim
Emacs는 아마도 그들이하는 일에서 구성 할 수 있다고 생각합니다.
Stephen은 원자 업데이트에 대해 언급 합니다 . 전체 재생성 문제는 파일 길이가 0으로 잘린 다음 기록된다는 것입니다. 다른 프로세스는 모든 데이터를 쓰기 전에이를 열어 읽을 수 있습니다.
원 자성 업데이트는 새 버전을 말한 file.new
다음로 이름 file.new
을 바꾸면 됩니다 file
. 백업 파일을 떠나, 하나는 만들 수 file.new
, 링크를 file
로 file~
누른 다음 이름 바꾸기 file.new
에 file
. 이름으로 파일에 액세스하는 프로세스가 이전 버전이나 새 버전 중 하나를 얻지 못하기 때문에 이름 바꾸기는 원자 적입니다. 열려있는 파일 핸들은 열려있는 파일을 가리키며 파일에 대한 일관된보기를 제공합니다.
로부터 파일 권한 같은 파일 (아이 노드)을 통해 절약의 관점이 파일 자체 (그러나 디렉토리)에 대한 쓰기 액세스를 필요로 이름을 변경하고 새로 작성하는 디렉토리에 대한 쓰기 액세스 (하지만 원본 파일이 필요합니다 ).
(이름 바꾸기 및 다시 작성은 누군가가 공유 디렉토리에서 파일을 작성하거나 수정하지만 그룹에 파일에 대한 액세스 권한을 부여하는 것을 잊은 경우에 대비하여 파일 권한을 수정하는 방법입니다.)