20155325 加分作业 实现pwd

本文介绍了mypwd命令的实现过程,包括如何使用Linux系统调用获取当前目录信息、打开及读取当前目录、改变工作目录,并通过递归方式构建完整的路径。文章还详细解释了如何利用stat函数获取当前目录节点号。

要求

1 学习pwd命令
2 研究pwd实现需要的系统调用(man -k; grep),写出伪代码
3 实现mypwd
4 测试mypwd

准备

1071478-20171119221417812-167978609.png

1071478-20171119221425921-2032521051.png

1071478-20171119221432124-1095296159.png

1071478-20171119221437952-431537812.png

1071478-20171119221447156-1972553534.png

1071478-20171119221533577-1728579591.png

1071478-20171119221547702-980987435.png

1071478-20171119221603015-1317194180.png

思路

问题

1.如何获取当前目录的节点号
Linux stat函数讲解(获取文件详细信息)

根据以上博客,我改了个小程序,结果如下
1071478-20171119221616952-1766229652.png

2.如何打开当前目录
opendir(".");

3.如何读取当前目录
readdir();

2.如何改变当前工作目录
chdir();

3.如何判定已进入根目录

inode == father_inode

4.如何存储路径并能利于直观调试

我设置了一个二维数组path[][],每一组存当前目录的名字

path[h][],在不同地方输出h就知道走到哪一层,最后一个存了几个路径。

顺序

递归:
{

  1. 获取当前目录和父目录的inode节点号
  2. 把当前的工作目录变成父目录
  3. 获取子目录的名字
  4. 如果1.的两个节点号相等则进入了根目录,退出输出。
  5. 递归

}

截图

1071478-20171119221640124-149918150.png

代码

mypwd

参考资料:

转载于:https://www.cnblogs.com/GDDFZ/p/7862514.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值