1 #include <stdio.h> 2 #include <sys/types.h> 3 #include <dirent.h> 4 5 void do_ls(char[]); 6 7 main(int ac , char * av[]) 8 { 9 if(ac == 1 ) 10 { 11 do_ls("."); 12 } 13 else 14 { 15 while( -- ac ) 16 { 17 printf("%s: ", * (++ av) ); 18 do_ls(*av); 19 } 20 } 21 } 22 23 void do_ls(char dirname[]) 24 { 25 DIR * dir_ptr ; 26 struct dirent * direntp ; 27 28 if(dir_ptr = opendir(dirname) == NULL ) 29 { 30 fprintf(stderr, "ls1 can not open %s ", dirname ); 31 } 32 else 33 { 34 while(direntp = readdir(dir_ptr ) != NULL ) 35 { 36 printf("%s ", direntp -> d_name ); 37 } 38 } 39 40 closedir(dir_ptr); 41 }
ls指令练习:
- 什么是目录?
目录是一种特殊的文件,内容包含文件和目录的名字,且目录文件永远不会为空,至少包含.和..两项,分别为当前目录和上一层目录。 - 系统调用: readdir ,opendir , closedir ;
- 包含文件: dirent.h——directory entry?
- 目录名称: dirent ;