디렉토리에 이미 열려있는 파일은 디렉토리가 삭제 된 후에도 계속 저장 될 수 있습니다. - Linux


0

이것은 리눅스의 성가신 특징이다.

디렉토리에 파일을 연 다음 디렉토리를 삭제하고 동일한 이름을 가진 다른 디렉토리를 같은 위치에 복사하면 열린 파일을 편집하고 저장할 수 있지만 휴지통으로갑니다! 나는 여러 번 동일한 실수를 저질렀다. 열린 파일을 편집하고 새로 복사 한 디렉토리에 저장하겠다고 생각했지만 편집하지 못했습니다.

이 기능을 비활성화 할 수 있습니까?


프로그래밍 문제가 아닙니다.
Oliver Charlesworth

2
이 기능은 짜증나는 일이 아니며 많은 유틸리티에서 필요합니다. 리눅스와 대부분의 Posix 시스템 (특히 모든 유닉스 계열 시스템)에는 이러한 동작이 필요합니다. 그리고 나는 당신이 디렉토리를 지우는 것의 의미를 정확히 이해하지 못합니다. 그만큼 rmdir(2) 여전히 디렉토리에 파일 항목이 있으면 syscall이 실패합니다. 편집자가 귀하의 상황을 감지해야합니다 ( emacs 것을 수행). 또한 버전 제어 시스템 (예 : git )를 소스 코드에 사용하십시오.
Basile Starynkevitch

어떤 편집기를 사용하여 파일을 편집합니까? 논리적으로 존재하지 않는 (삭제 된) 디렉토리에 파일을 저장하면 오류 / 경고가 발생합니다.

그것이 폐물 파일을 삭제하지는 않았지만 파일을 옮긴 경우 파일이 새 위치에서 편집됩니다. 그것은 특징입니다.
Daniel Beck

답변:


2

이 기능은 설계대로 작동합니다. 파일 기술자는 파일이 연결 해제 된 후에도 열려있을 수 있습니다. unlink (2)의 매뉴얼 페이지는 다음과 같이 말한다 :

unlink ()는 파일 시스템에서 이름을 삭제합니다 ... 이름이 소켓, fifo 또는 장치를 참조하면 그 이름은 제거되지만 객체가 열려있는 프로세스는 계속 사용합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.