문제

디렉토리는 내부의 파일의 inode 번호와 이름을 포함하는 Unix의 파일 일뿐입니다. 이것을 어떻게 살펴 봐요? 디렉토리에서 고양이를 사용할 수 없으며 VI에서 열면 파일 목록이 표시됩니다 ... inode 번호 없음.

도움이 되었습니까?

해결책

이것은 프로그래밍 질문이기 때문에 (IT ~이다 프로그래밍 질문은 그렇지 않습니까?) opendir, readdir 그리고 closedir 기능. 이것들은 단일 유닉스 사양의 일부입니다.

#include <sys/types.h>
#include <dirent.h>

DIR *opendir (const char *dirname);
struct dirent *readdir(DIR *dirp);
int closedir(DIR *dirp);

그만큼 dirent.h 파일은 적어도 다음을 포함하는 필요한 구조가 있어야합니다.

char   d_name[]    name of entry
ino_t  d_ino       file serial number

보다 여기readdir 인력 - 다른 사람들에 대한 링크가 포함되어 있습니다.

디렉토리 항목에 저장된 파일에 대한 정보의 양은 최소화됩니다. inode 자체에는 당신이 얻은 것들이 포함되어 있습니다. stat 실제 파일 컨텐츠에 대한 모든 중요한 포인터와 함께 기능, 시간, 크기, 소유자, 권한 등과 같은 기능.

다른 팁

예전 - 버전 7, 시스템 III, 초기 시스템 V- 디렉토리를 열고 메모리에 내용을 읽을 수 있습니다. 특히 2 바이트 inode 숫자와 파일의 14 바이트 제한이있는 이전 유닉스 파일 시스템의 경우. 이름.

보다 이국적인 파일 시스템이 더 널리 퍼져 있기 때문에, 디렉토리의 내용을 구문 분석하는 것이 점점 사소 해지 기 때문에 Opendir (), readdir (), closedir () 기능 호출 제품군이 대신 사용되어야했습니다.

마지막으로 지난 10 년 동안 대부분의 시스템에서 디렉토리를 읽을 수없는 시점에 도달했습니다. 당신은 그것을 열 수 있으며 (주로 fchdir ()와 같은 작업이 작동 할 수 있으므로 OpenDir () 호출 제품군을 사용하여 읽을 수 있습니다.

그것은처럼 보인다 stat 명령 순서대로있을 수 있습니다. 기사에서 :

stat /etc/passwd

    File: `/etc/passwd'
    Size: 2911                Blocks: 8 IO    Block: 4096 regular file
    Device: fd00h/64768d      Inode: 324438   Links: 1
    Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
    Access: 2008-08-11 05:24:17.000000000 -0400
    Modify: 2008-08-03 05:11:05.000000000 -0400
    Change: 2008-08-03 05:11:05.000000000 -0400
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top