第4章 文件系统:编写pwd
来源:互联网 发布:word mac版打印 编辑:程序博客网 时间:2024/05/06 04:24
/* * spwd.c: a simplified version of pwd * * starts in current directory an recursively * climbs up to root of filesystem, prints top part * then prints current part * * uses readdir() to get info about each thing * * bug: prints an empty string if run from "/" * */#include <stdio.h>#include <sys/types.h>#include <sys/stat.h>#include <dirent.h>ino_t get_inode(char *);void printpathto(ino_t);void inum_to_name(ino_t, char *, int);int main(){ printpathto(get_inode(".")); /* print path to here */ putchar('\n'); /* then and newline */ return 0;}void printpathto(ino_t this_inode) /* * prints path leading down to an object with this inode * kindof recursive */{ ino_t my_inode; char its_name[BUFSIZ]; if (get_inode("..") != this_inode) { chdir(".."); /* up one dir */ inum_to_name(this_inode, its_name, BUFSIZ); /* get its name */ my_inode = get_inode("."); /* print head */ printpathto(my_inode); /* recursively */ printf("/%s", its_name); /* now print */ /* name of this */ }}void inum_to_name(ino_t inode_to_find, char *namebuf, int buflen) /* * looks through current directory for a file with this inode * number and copies its name into namebuf */{ DIR *dir_ptr; /* the directory */ struct dirent *direntp; /* each entry */ dir_ptr = opendir("."); if(dir_ptr == NULL) { perror("."); exit(1); } /* * search directory for a file with specified inum */ while ((direntp = readdir(dir_ptr)) != NULL) if (direntp->d_ino == inode_to_find) { strncpy(namebuf, direntp->d_name, buflen); namebuf[buflen-1] = '\0';/* just in case */ closedir(dir_ptr); return ; } fprintf(stderr, "error looking for inum %d\n", inode_to_find); exit(1);}ino_t get_inode(char *fname) /* * returns inode number of the file */{ struct stat info; if (stat(fname, &info) == -1) { fprintf(stderr, "Cannot stat "); perror(fname); exit(1); } return info.st_ino;}
0 0
- 第4章 文件系统:编写pwd
- 【Unix/Linux编程实践】文件系统:编写pwd
- linux文件系统(pwd的编写)
- 《unix/linux编程实践教程》学习笔记:第四章 文件系统:编写pwd
- 编写 pwd
- 第4章 文件系统
- 《现代操作系统》第4章 文件系统
- 第4章 ext文件系统机制
- Unix文件系统和pwd命令实现 一
- Unix文件系统和pwd命令实现 二
- 第14章 文件系统
- linux下pwd命令的编写
- pwd
- pwd
- pwd
- pwd
- pwd
- pwd
- ssm框架学习---将本地代码托管到github上
- 快速幂
- Android跨进程通信的四种方式
- 科大讯飞语音语义json格式解析
- oracle学习之:oracle 11g,恢复丢失的临时表空间文件
- 第4章 文件系统:编写pwd
- 《c和指针》(二)
- TCP客户端向路由器发送协议并显示回送内容、附带源码
- XML基础
- IntelliJ IDEA 15 创建maven项目
- acm整除个数
- A. Alyona and copybooks
- Linux-smtp遇见的问题
- C组没做完的题