日期:2014-05-16 浏览次数:20919 次
买了本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. }
*/其他的细节待以后看书再补全