日期:2014-05-16 浏览次数:20794 次
买了本Advanced Programming in the UNIX Environment,感觉不错,不愧被称为圣经,最近一段时间可能要看它了,写了地一个程序,查看目录的所有文件
#include<stdio.h> #include<dirent.h> int main(int argc, char *argv[]) { DIR *dir; struct dirent *dirp; if(argc != 2) { printf("no directory name\n"); return; } if( (dir = opendir(argv[1])) == NULL) { printf("can't open %s\n", argv[1]); return; } while( (dirp = readdir(dir)) != NULL) printf("%s\n", dirp->d_name); return 0; }运行结果
首先说说DIR这一结构体,以下为DIR结构体的定义:
/* 1. struct __dirstream 2. { 3. void *__fd; 4. char *__data; 5. int __entry_data; 6. char *__ptr; 7. int __entry_ptr; 8. size_t __allocation; 9. size_t __size; 10. __libc_lock_define (, __lock) 11.}; 12. 13. typedef struct __dirstream DIR; */
/* 1. struct dirent 2. { 3. long d_ino; //inode number 索引节点号 4. 5. off_t d_off; // offset to this dirent 在目录文件中的偏移 6. 7. unsigned short d_reclen; //length of this d_name 文件名长 8. 9. unsigned char d_type; // the type of d_name 文件类型 10. 11. char d_name [NAME_MAX+1]; //file name (null-terminated) 文件名,最长255字符 12. } */其他的细节待以后看书再补全