目录管理
目录管理
例1: 目录的创建/删除
mymkdir.c
#include <stdio.h> #include <errno.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <fcntl.h> #define ERROR(flag) \ if(flag) \ { \ printf("%d: ",__LINE__); \ fflush(stdout); \ perror("error"); \ exit(errno); \ } int main(int argc,char *argv[]) { system("ls --color=tty"); int ret = mkdir("dir", 0777); ERROR(ret == -1); system("ls --color=tty"); ret = rmdir("dir"); system("ls --color=tty"); return 0; }
编译/链接/运行, 输出如下:
./mymkdir执行中(上图), 三次显示当前目录下的内容. mkdir()执行后到rmdir()执行前有dir目录, rmdir()执行后dir目录被删除
例2: 进入另一目录
mychdir.c
#include <stdio.h> #include <errno.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <fcntl.h> #define ERROR(flag) \ if(flag) \ { \ printf("%d: ",__LINE__); \ fflush(stdout); \ perror("error"); \ exit(errno); \ } int main(int argc,char *argv[]) { char buf[256]; char *pret = getcwd(buf,256); ERROR(pret == NULL); puts(buf); int ret = chdir(argv[1]); ERROR(ret == -1); pret = getcwd(buf,256); ERROR(pret == NULL); puts(buf); return 0; }
编译/链接/执行, 输出如下:
例3: 打开目录, 打印目录内容相关信息
myopendir.c
#include <stdio.h> #include <errno.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <fcntl.h> #include <dirent.h> #define ERROR(flag) \ if(flag) \ { \ printf("%d: ",__LINE__); \ fflush(stdout); \ perror("error"); \ exit(errno); \ } int main(int argc,char *argv[]) { DIR *dir; struct dirent *p; dir = opendir(argv[1]); ERROR(dir == NULL); while((p = readdir(dir)) != NULL) { printf("%s , %d\n", p->d_name, p->d_ino); } closedir(dir); return 0; }
编译链接执行, 输出结果如下: