rm은 열린 파일을 언제 제거합니까?


3

특히, 나는 열린 파일을 등록하고 파일 설명자를 해당 파일에 보유하는 프로세스를 명시 적으로 종료하지 않을 때 발생하는 상황을 알고 싶습니다. 시스템이 종료 될 때 파일이 제거됩니까?

답변:


3

기본적으로 그렇습니다-프로세스를 열어 놓을 때마다 죽습니다. 그 시점에서 "마법"은 발생하지 않습니다. 파일의 디렉토리 항목이 해당 파일의 데이터를 포함하는 블록에 대한 "하드 링크"인 것처럼 열린 파일 핸들도 마찬가지입니다. 디렉토리 항목이없고 열린 파일 핸들이없는 경우 블록을 재사용 할 수 있습니다. 즉, 완전히 종료하지 않으면 (예 : 전원 코드를 잡아 당기지 않아도) 파일이 여전히 삭제됩니다. rm을 실행할 때 "삭제"되었으므로 해당 블록 만 즉시 재사용 할 수 없었습니다.


-1

커널은 in-memory 파일 inode의 사본을 잠근 상태로 유지하므로이 파일에 속하는 데이터 블록과 inode는 한 프로세스가 파일을 연 동안 해제 할 수 없습니다. 파일이 완전히 닫히면 (시스템이 종료되고 프로세스가 종료 될 때 발생 함) 모든 블록과 inode가 재사용을 위해 해제됩니다. 이것은 파일 시스템을 마운트 해제하고 (파일이 열려 있으면 마운트 해제 할 수 없음) 시스템이 종료되기 전에 발생합니다.

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