- #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>
- //struct dirent *readdir(DIR *dir);
- //int stat(const char *path, struct stat *buf);
- //DIR *opendir(const char *name);
- 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;
- }
linux系统调用之文件:递归实现pwd
最新推荐文章于 2025-08-08 20:58:41 发布