linux系统调用之文件:递归实现pwd
来源:互联网 发布:内容推荐算法 代码 编辑:程序博客网 时间:2024/06/06 07:38
- #include <sys/types.h>
- #include <dirent.h>
- #include <sys/stat.h>
- #include <unistd.h>
- #include <string.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <dirent.h>
-
-
-
-
-
-
- void pwd(ino_t d_ino)
- {
- DIR *dir;
- struct dirent *read_dir, *tmp;
- ino_t inode = 0;
-
- if((dir = opendir(".")) == NULL)
- {
- fprintf(stderr, "Can not open ./n");
- exit(1);
- }
-
- while((read_dir = readdir(dir)) != NULL)
- {
- if(strcmp(read_dir->d_name, ".") == 0)
- {
- inode = read_dir->d_ino;
- }
- if(strcmp(read_dir->d_name, "..") == 0)
- {
- if(read_dir->d_ino != inode)
- {
- chdir("..");
- pwd(inode);
- }
- }
- if(read_dir->d_ino == d_ino)
- {
- tmp = read_dir;
- }
- }
-
- printf("/%s", tmp->d_name);
- return;
- }
-
- int main(void)
- {
- pwd(0);
- printf("/n");
- return 0;
- }