2016-11-21 1 views
0

유닉스의 모든 것이 파일이기 때문에 우리가 "cd"라고 부를 때. 우리는 실제로 그 전화 번호부에 침입하고 있습니까? ? 각 디렉토리의 상위 디렉토리에 대한 보호 된 기호 참조입니까?기간 명령은 "."입니다. ".."실제로 파일을 참조합니까?

+1

'.'와'..'는 모두 현재 디렉토리와 부모 디렉토리를 가리키는 디렉토리의 실제 파일 이름 항목 (inode 번호와 파일 이름)입니다. 그것들은 심볼릭 링크가 아닙니다. 그들은 하드 링크입니다. 모든 프로세스에는 커널이 기록한 현재 디렉토리가 있습니다. 그것은 디렉토리 inode에 대한 참조 카운트를 유지하므로, 상황이 너무 심각하게 잘못되지 않습니다. –

+0

http://stackoverflow.com/help/how-to-ask, http://stackoverflow.com/help/dont-ask, http://stackoverflow.com/help/mcve를 읽고 [둘러보기] (http://stackoverflow.com/tour) 여기에 더 많은 질문을 게시하기 전에. 행운을 빕니다. – shellter

답변

2

예, 유닉스의 모든 것은 파일입니다. 모든 디렉토리와 마찬가지로 모든 유형의 파일, 모든 장치 (스피커, 키보드 등) 및 심지어 파일 시스템 자체도 모두 OS 용 파일처럼 작동합니다. Unix에서는 모든 파일에 inode가 첨부되어 있습니다.이 파일에는 사용 권한, 크기, 타임 스탬프 및 가장 중요한 파일 데이터 포인터가 실제 파일 데이터가 들어있는 데이터 블록을 가리키는 정보와 같은 파일 메타 데이터가 들어 있습니다.

따라서 각 디렉토리 (파일)에는 아이 노드가 있습니다. 디렉토리의 내용은 일련의 레코드입니다. 각 레코드에는 파일 이름과 아이 노드 번호 인 두 개 이상의 필드가 있습니다.

file1name file1_inode_number 

정확한 레코드 구조는 파일 시스템 구현에 따라 다릅니다. 따라서 기본적으로 디렉토리 파일에는 각 파일에 해당하는 (레코드) 항목과 그 안에있는 하위 디렉토리가 있습니다. 그뿐만 아니라, 디렉토리 파일은 각각 (당신이 cd ./ 또는 cd ../ OS가 현재 또는 상위 디렉토리를 참조 할 때마다 구조가 그래서

.   inode_number_of_self 
..   inode_number_of_parent_dir 
file1name inode_number_of_file1 
file2name inode_number_of_file2 
. 
. 
so on 

처럼 보인다하여 모든 디렉토리를 통해

. : mapped with self inode 
and 
.. : mapped with parent's inode 

이다 2 개 항목을 포함)를 현재 디렉토리에 비례하여 적용합니다.

관련 문제