octal dump란 무엇인가요??? 바이트 된 문자열을 보여준다는데..
글쓴이: xhdlland / 작성시간: 토, 2006/04/15 - 4:33오후
od -c .
유닉스에서 위와 같은 명령어를 치면 현재 디렉토리를 보여주는데요 도저히 해석이 안되네요
특별한 규칙성이 없는거 같기도 하고 . .. 위치는 고정 적인데 그리고 005 korea 이건 알아냈구요 앞으로 숫자가 뒤의
파일명 길이를 나타내는거 같고, 유닉스에선 디렉토리도 파일처럼 보고 디텍토리는 안의 파일및 내용을 연속된 문자열
스트림으로 표현 된다는데 octal dump의 해석이 안되네요
시스템 호출 함수 open()을 이용하여 디텍토리의 내용을 검사하는 코드를 작성하려고 하는데 octal dump의
해석이 안되어 이렇게 물어봅니다. 어떠한 법칙이라도 있는겁니까?
Forums:
디렉토리 내용을
디렉토리 내용을 검사하고 싶다는 게, 단순히 디렉토리 안에 있는 파일들을 얻고 싶은 것인지, 아니면, 정말로 레코드 단위로 하나씩 뜯어서 보고 싶다는 것인지 확실하게 판단이 되지 않습니다.
실제 directory의 내용을 보는 portable한 시스템 콜은 없습니다. open(2)으로 디렉토리를 열어서 보는 것이 가능한 시스템도 있지만, Linux와 같은 시스템은 (보안 상, 또는 파일 시스템의 안정성을 위해) open(2)으로 디렉토리를 열 수 없게 만들었습니다.
따라서 portable한, 디렉토리 내용을 보는 방법은, opendir(3), readdir(3), closedir(3)을 쓰는 것 밖에 없습니다.
라이브러리 함수 호출이 아닌, system call 수준을 원하신다면, getdents(2)를 쓰는 것도 생각할 수 있습니다.
하지만, 어느 경우라도 실제 디스크에 기록되어 있는 내용을 그대로 보여 주는 portable한 방법은 존재하지 않습니다. 어차피 파일 시스템 포맷에 따라 달라질 수 있기 때문입니다. 따라서, opendir(3)/readdir(3)/closedir(3)만 써서 디렉토리 내용에 접근하시길 강력하게 추천합니다.
--
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://www.cinsk.org/cfaqs/
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
답변 감사합니다 그런데...
답변 글 잘 읽었습니다. 그냥 단순히 디렉토리의 파일의 내용을 보려고 하는겁니다. od -c . 라는 명령어를 하면 안의 파일 덤프 들이 보이는데 여기의 내용들을 분석하여 open()이라는 시스템 콜로도 파일명을 읽는것이 가능한가요?
read()라는 시스템 콜을 이용하여 찍어보니 그냥 공백 들만 찍히더군요
open()이라는 시스템 콜을 이용해서도 opendir()과 readdir()을 사용하는 것처럼 디렉토리안의 파일명을 볼수 있는 건가요?
opendir()이라는 것은 라이브러리로 알고 있는데 이 함수는 어떻게 해서 디렉토리안의 파일 내용을 볼수 있게 하는것인가요 유닉스의 usr/include/dirent.h안을 보아도 어떻게 되어있는것인지 안나오더군요
댓글 달기