linux命令实现:pwd
来源:互联网 发布:360软件检测中心 编辑:程序博客网 时间:2024/04/28 01:58
pwd命令:显示当前的工作目录。
这个命令实现起来很简单,分分钟就写好了。这里主要注意一点,chdir()这个系统调用,是改变当前程序的工作目录,不是改变bash的工作目录,这是不一样的。还有,改动是立即生效的,在需要用到工作目录(其实就是一个路径名)的时候,程序就会读取某个地方的信息,当调用chdir()时,直接把这个信息更改,后续的读取到的工作目录就会改变,在本程序中,输出的时候用到了递归,一定要注意,不要骐骥着递归回溯到函数的时候,工作目录就会转变为当时这个函数时的工作目录,工作目录当时就变了,以后也是变的,回溯时的工作目录早就不是了,这个要注意。
附上代码:
#include<stdio.h>#include<sys/stat.h>#include<dirent.h>#include<stdlib.h>#include<string.h>#include<sys/types.h>void printpath();char *inode_to_name(int);int getinode(char *);int main(){printpath();putchar('\n');return ;}void printpath(){int inode,up_inode;char *str;inode = getinode(".");up_inode = getinode("..");chdir("..");str = inode_to_name(inode);if(inode == up_inode) {//printf("/%s",str);return;}printpath();printf("/%s",str);}int getinode(char *str){struct stat st;if(stat(str,&st) == -1){perror(str);exit(-1);}return st.st_ino;}char *inode_to_name(int inode){char *str;DIR *dirp;struct dirent *dirt;if((dirp = opendir(".")) == NULL){perror(".");exit(-1);}while((dirt = readdir(dirp)) != NULL){if(dirt->d_ino == inode){str = (char *)malloc(strlen(dirt->d_name)*sizeof(char));strcpy(str,dirt->d_name);return str;}}perror(".");exit(-1);}
0 0
- linux命令实现:pwd
- Linux命令简单实现 -- pwd
- Linux命令实现(5)pwd
- Linux命令的实现 -- ls pwd cd
- Linux:实现自己的pwd命令
- C语言实现linux pwd命令
- C语言实现linux pwd命令
- linux命令:pwd命令
- pwd 命令实现
- linux下pwd命令
- Linux命令之pwd
- Linux 命令之pwd
- Linux命令:pwd
- linux pwd命令详解
- linux命令-pwd
- Linux pwd 命令 【转载】
- Linux命令行:pwd命令
- Linux常用命令:pwd命令
- 电话拨号器详解
- Java中常用的输入输出
- zju1019-lllusive chase(搜索算法)
- 2996 Comrade 同志
- socket编程中write、read和send、recv之间的区别
- linux命令实现:pwd
- 自己编程实现整数转化成字符串以及字符串转化成整数
- 爱情是什么?
- startActivityForResult用法详解
- 元数据
- [LeetCode][Java] Best Time to Buy and Sell Stock
- PS选区与羽化的概念
- 图的搜索算法javascript
- MathType中的符号与公式