pwd

it2022-05-05  121

 

#include<stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> #include<dirent.h> ino_t get_inode(char * fname); int main() { int re=-2; int re1=-2; ino_t t,t1; t=get_inode("."); t1=get_inode(".."); DIR *dir_ptr; struct dirent *dirent; while(t1!=t) { chdir(".."); if((dir_ptr=opendir("."))!=NULL) { while((dirent=readdir(dir_ptr))!=NULL) { if(dirent->d_ino==t) { printf("/%s\n",dirent->d_name); closedir(dir_ptr); break; } } } else { perror("."); exit(1); } t1=get_inode(".."); t=get_inode("."); } } ino_t get_inode(char * fname) { struct stat info; if(stat(fname,&info)==-1) { perror(fname); exit(1); } return info.st_ino; }

 

pwd的原理:和Linux目录数据结构有关

这个代码原理就是:

首先从当前目录出发 去上一级目录 同时打印目录名称,一直去上一级直到到根目录.怎么判定到了最后的目录呢通过节点号.

   


最新回复(0)