심볼릭 링크가 포함 된 작은 파일 위치 는 심볼릭 링크의 것을 나타내는 디렉토리 항목에 플래그, 대상 파일의 (즉, 경로와 파일 이름을).
심볼릭 링크를 열면 OS가 위치를 따라 대상 파일을 찾습니다. 대상 자체가 심볼릭 링크 인 경우 위치 가 심볼릭 링크 가 아닌 파일을 가리킬 때까지 (1) (2) 해당 위치를 따릅니다 (FinalFile이라고 함 ). 그런 다음 OS는 FinalFile 의 inode 를 가져 옵니다 (inode에는 수정 시간과 같은 메타 데이터가 포함되어 있으며 파일 데이터에 대한 포인터도 포함되어 있음). 마지막으로 FinalFile 의 inode 가 열립니다. 이제부터 프로세스는 해당 inode를 사용하여 파일을 읽고 씁니다. 결과적으로 심볼릭 링크 이름 또는 경로 변경, 심볼릭 링크 삭제, FinalFile 경로 또는 이름 변경 또는 FinalFile 삭제(3) 프로세스에 영향을 미치지 않습니다. 여전히 같은 아이 노드에서 읽습니다.
대부분의 경우 symlink에 대한 파일 데이터 작업은 FinalFile에 영향을 미치지 만 (예 : symlink 읽기 및 쓰기는 FinalFile 에서 읽기 / 쓰기 ) readlink()
시스템 예외 는 symlink 자체의 내용을 읽습니다.
반면 파일 메타 데이터 작업 (이름 바꾸기 또는 삭제 등)은 일반적으로 심볼릭 링크에 영향을줍니다. 그러나 여기에도 예외가 있습니다. lstat()
시스템 호출은 FinalFile (2)이 stat()
아닌 심볼릭 링크 자체에 대한 정보를 반환한다는 점을 제외하고 는 비슷 합니다 .
(1) 레벨 수에 제한이 있으며 심볼릭 링크의 위치가 상대 경로 인 경우 상황이 조금 더 복잡해집니다.
(2) symlink (7 )를 읽으십시오 : 자세한 내용은 심볼릭 링크 처리 를 참조하십시오.man 7 symlink
(3) rm
명령이나 unlink()
시스템 호출은 실제로 파일을 제거하지 않습니다. 파일의 inode를 가리키는 디렉토리 항목을 제거합니다. 파일 자체는 경우에만 제거 모두 의 아이 노드를 참조 b)는 어떤 프로세스가 열려있는 파일이 없습니다 더 이상 디렉토리 엔트리 (하드 링크)가없는)가.