DIR, __dirstream data type 에 대해서 질문 있습니다.
글쓴이: avimimus / 작성시간: 목, 2004/01/15 - 2:18오후
/usr/include/dirent.h 파일을 보면,
DIR 이라는 type 에 대해서 정의되어 있는데, 다음과 같습니다.
Quote:
/* This is the data type of directory stream objects.
The actual structure is opaque to users. */
typedef struct __dirstream DIR;
그런데 위에 opaque라고 써 있듯이, __dirstream 이라는 structure는
사용자에게 안 보이도록 되어 있는 것 같더군요..
그러면 도대체 __dirstream structure의 정체는 무엇인거죠??
또 왜 그렇게 안 보이게 해 놓은 것인지 궁금합니다..
한가지 더 질문을 드리자면요,
구글에서 검색을 하다 보니, 어떤 mailing list에서 다음과 같은 답변을 보게 되었는데요,
Quote:
> I cannot find the definition of struct __dirstream anywhere to find out
> how to repair the old broken code. The comments in dirent.h indicate the
> underlying structure is opaque; so far it certainly has been to me. Any
> help is appreciated.Opaque means exactly that -- you can't peek inside. More of the
structures in libc should be that way as it increases the chances
of binary compatibility.You want to be using the function dirfd() to get at that value.
어째서 이렇게 __dirstream 을 못 보게 하는 것이 binary compatibility chance를 증가시킨다는 것인지 잘 모르겠습니다..
좀 알려 주시면 감사하겠습니다~
ps) 참고로, glibc-2.3.2-27.9.7 입니다.
Forums:
Re: DIR, __dirstream data type 에 대해서 질문 있습니다.
잘 알지 못하다..들은 "가라"로 끼워 마춰보면..
Infomation Hiding 개념에 가까운게 아닐런지요..(캡슐화라고 해야 할까요..)
예를들어 모든 file stream을 알 필요가 없듯이.. __dirstream 은 디렉토리 구조를 Hack 하려고 하지 않는 이상 구지 알 필요가 없는 것 아닐까요?
ps) glibc 버젼과는 상관없는 문제인듯 합니다.
http://redage.net
Re: DIR, __dirstream data type 에 대해서 질문 있습니다.
서로 다른 OS, 서로 다른 파일시스템에서 __dirstream은 다른 형태를 가질 수 있게 해준다는 것이지요. 어떤 파일시스템에서는 __dirstream을 A 형태로 가지는게 최적이고, 어떤 파일시스템은 __dirstream을 B 형태로 가지는게 최적일 수 있습니다.
사용자가 직접 __dirstream을 조작하려면 각각의 OS 및 파일시스템을 전부 고려해서 설계해야겠지요. 아예 안보이게 해두고, 조작용 함수를 따로 제공하면 소스 차원에서 호환성이 증가하는 것입니다 :) (나머지는 libc에 맡기면 됩니다)
댓글 달기