답변:
유닉스에서 모든 일반 파일은 하드 링크입니다. 유닉스 (및 대부분 (모두)) 파일 시스템의 하드 링크는이라는 것을 가리 킵니다 inode
. (가) inode
참조 카운터를 가지고 사용하면, 세번째, 네번째, 등등의 링크 제를 만들 때, 카운터는 1이다 (통상의 수법이다) 파일에 대한 하나의 "링크"를 가질 때, 카운터 (상승) 각을 증가 하나씩 시간. rm
링크 를 삭제 ( )하면 카운터가 1 씩 감소 (감소)됩니다. 링크 카운터가 0에 도달하면 파일 시스템은를 제거하고 inode
사용 가능한 공간을 표시합니다.
즉, 마지막 링크를 삭제하지 않는 한 파일은 유지됩니다.
Edit:
마지막 링크가 제거 되더라도 파일은 유지 됩니다 . 이것은 파일에 포함 된 데이터의 보안이 다른 프로세스에 액세스 할 수 없도록하는 방법 중 하나입니다. 파일 시스템에서 데이터를 완전히 제거하는 것은 메타 데이터에 지정된대로 데이터에 0 개의 링크가 있고 프로세스에서 사용하지 않는 경우에만 수행됩니다.
이 IMHO는 하드 링크 (및 소프트 링크와의 차이점)를 이해하는 가장 쉬운 방법입니다.
unlink
.
/proc
별도의 (가상) 파일 시스템 이기 때문에 정확하게는 아닙니다 .
unlink()
파일을 삭제 하라는 호출 은 1990 년대 상반기에 MS-DOS에서 C 프로그래밍으로 게임을 시작했을 때 끝이 없었습니다. :)
테스트는 생각보다 쉽습니다. 텍스트 파일을 만든 다음 하드 링크했습니다. 하드 링크를 삭제해도 하드 링크 된 파일은 삭제 되지 않으며 연결된 파일은 원래 위치에 남아 있습니다.
디스크의 모든 파일은 실제로 드라이브의 실제 데이터에 대한 포인터입니다.
해당 파일에 대한 하드 링크를 만들면 하드 링크 파일은 원본 파일이 가리키는 것과 동일한 데이터를 가리 킵니다.
이 예에서와 같이 a.txt는 드라이브에있는 파일의 데이터 (바이트)를 가리키고 있습니다. 하드 링크 b.txt가 만들어지면 a.txt가 가리키는 것을 가리 킵니다.
따라서 이들 중 하나를 제거하면 서로 분리 된 다른 하나에 영향을 미치지 않습니다.
그러나 두 가지를 모두 제거하면 시스템에 디스크에있는 데이터에 해당 파일을 가리키는 파일이 없다는 것을 알 수 있으므로 시스템은이를 빈 공간으로 간주하여 원할 때 덮어 씁니다.
FILE "A.txt"
동일 하다는 것을 분명히하는 것이 중요하다고 생각합니다 . 링크는 실제로 검은 색 화살표입니다. LINK "B.txt"
FILE
LINK
unlink()
입니다.