博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
20165232 实现pwd
阅读量:7245 次
发布时间:2019-06-29

本文共 1339 字,大约阅读时间需要 4 分钟。

20165232 实现mypwd

题目要求

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

学习pwd命令

  • 用man pwd 查看帮助文档
    image
  • 显示当前目录所在路径 pwd
  • 显示当前目录的物理路径 pwd –P
  • 显示当前目录的连接路径:pwd -L

2.研究pwd实现需要的系统调用(man -k; grep),写出伪代码

image

man-k directory | grep 2
{    getinode(".");获取当前目录节点    getinode(".."); 获取父目录节点    记录当前节点的目录名;    只有当inode == up_inode时,打印。}

3.实现pwd命令

代码

#include
#include
#include
#include
#include
#include
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); }

image

转载于:https://www.cnblogs.com/heyanda/p/10017909.html

你可能感兴趣的文章
Gentoo安装(UEFI+Stub_kernel+Systemd+awesome)
查看>>
找出apache日志中访问量最大的IP
查看>>
高可用集群之heartbeat v2--基于CRM实现mysql高可用集群(未完)
查看>>
linux 6.4使用xmanager4的配置
查看>>
Servlet--表单、超链接、转发、重定向4种情况的路径
查看>>
tomcat解压版exe文件启动闪退问题
查看>>
Skype多人群组视频功能免费了
查看>>
云桌面远程协助
查看>>
CentOS(5.8/6.4)linux生产环境若干优化实战
查看>>
20145328 《信息安全系统设计基础》第5周学习总结
查看>>
10.使用子查询 ---SQL
查看>>
Linux下chkconfig命令详解
查看>>
坦克大战---可能带BUG
查看>>
excel表数据分列
查看>>
3、kvm虚拟机日常管理与配置
查看>>
php各个模式、版本的区别
查看>>
shell中的点命令与source命令
查看>>
我的友情链接
查看>>
百度 ueditor 富文本编辑器的使用心得 jsp版本 1.4的JDK weblogic8
查看>>
软件安装
查看>>