디렉토리에 대한 OD 에뮬레이션

디렉토리에 대한 OD 에뮬레이션

od(1)이 UNIX에서는 작동했지만 GNU/Linux에서는 작동하지 않는 이유가 궁금합니다. 좋은 답변이 있습니다서버 결함. 다음 질문은 GNU/Linux에서 디렉토리 데이터 덤프를 지원하기 위해 이상한 동작을 에뮬레이트할 수 있는 도구를 알고 있습니까?

답변1

Linux에서는 일반 작업을 수행할 수 없습니다 read(dir_name, buffer, sizeof(buffer). 항상 -1을 반환하고 EISDIR을 errno. 모든 파일 시스템이 디렉토리를 파일로 갖고 있는 것은 아니기 때문에 이것은 아마도 합리적일 것입니다. 예를 들어 일반적으로 사용되는 reiserfs는 그렇지 않습니다.

C 프로그램의 시스템 호출을 사용하여 open()디렉토리의 파일 설명자를 얻을 수 있지만 readdir(3)(libc에서) 호출 과 같은 것들은 getdents(2)실제로 디렉토리 항목을 검색합니다. 각 파일 시스템 구현에는 struct linux_dirent파일 시스템이 디렉토리 항목을 저장하는 데 사용하는 모든 것(파일, 데이터베이스, 디스크 상의 B-트리)에서 생성하기 위한 코드가 있을 수 있습니다 .

관련 정보