1 学习pwd命令

  • Linux中用 pwd 命令来查看”当前工作目录“的完整路径。 简单得说,每当你在终端进行操作时,你都会有一个当前工作目录。

    在不太确定当前位置时,就会使用pwd来判定当前目录在文件系统内的确切位置。
  1. 命令格式:

    pwd [选项]

  2. 命令功能:

    查看”当前工作目录“的完整路径

3.常用参数:

  • 一般情况下不带任何参数
  • 如果目录是链接时:
    • 格式:pwd -P 显示出实际路径,而非使用连接(link)路径。
  1. man pwd


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

  1. man -k pwd

  1. man -k pwd|grep 1


3 实现mypwd

  • 代码如下所示:
  1. #include<stdio.h>
  2. #include<sys/stat.h>
  3. #include<dirent.h>
  4. #include<stdlib.h>
  5. #include<string.h>
  6. #include<sys/types.h>
  7. #define BUFFER 10
  8. #define BUFFERSIZE 50
  9. int process(char str[][BUFFERSIZE],int h) ;
  10. int get_name(int inode,char str[][BUFFERSIZE],int h) ;
  11. int get_inode(char inode[]);
  12. int main()
  13. {
  14. char path[BUFFER][BUFFERSIZE];
  15. int h=0;
  16. h = process(path,h);
  17. // printf("h = %d",h);
  18. int i2;
  19. for(i2=h-2;i2>=0;i2--)
  20. printf("/%s",path[i2]);
  21. printf("\n");
  22. return 0;
  23. }
  24. int process(char path[][BUFFERSIZE],int h)
  25. {
  26. int inode,father_inode;
  27. inode = get_inode(".");
  28. father_inode = get_inode("..");
  29. chdir("..");
  30. h = get_name(inode,path,h);
  31. if(inode == father_inode) {
  32. return h;
  33. }
  34. h = process(path,h);
  35. return h;
  36. }
  37. int get_inode(char inode[])
  38. {
  39. struct stat buf;
  40. stat(inode, &buf);
  41. return buf.st_ino;
  42. }
  43. int get_name(int inode,char path[][BUFFERSIZE],int h)
  44. {
  45. DIR *dir;
  46. struct dirent *dir2;
  47. if((dir = opendir(".")) == NULL){
  48. perror(".");
  49. exit(-1);
  50. }
  51. while((dir2 = readdir(dir)) != NULL)
  52. {
  53. if(dir2->d_ino == inode)
  54. {
  55. strcpy(path[h],dir2->d_name);
  56. break;
  57. }
  58. }
  59. h = h+1;
  60. return h;
  61. }

4 测试mypwd

2017-2018-1 20155215 第九周 加分项 PWD命令的实现的更多相关文章

  1. 2017-2018-1 20155338 《信息安全系统设计基础》第5周加分项Mybash的实现

    2017-2018-1 20155338 <信息安全系统设计基础>第5周加分项Mybash的实现 使用fork,exec,wait实现mybash 一.fork函数 定义和理解:fork( ...

  2. 2017-2018-1 20155339 第十一周加分项Linux下Mypwd的实现

    2017-2018-1 20155339 第十一周加分项Linux下Mypwd的实现 学习pwd命令 通过man命令查看pwd命令的功能 由图可知pwd命令的用途是显示工作目录的路径名称.pwd 命令 ...

  3. 学号 20175212 《Java程序设计》第九周学习总结

    学号 20175212 <Java程序设计>第九周学习总结 教材学习内容总结 一.MySQL数据库管理系统 1.在官网上下载并安装MySQL 2.在IDEA中输入测试代码Connectio ...

  4. 20155306 2016-2017-2 《Java程序设计》第九周学习总结

    20155306 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 16.1 JDBC入门 Java语言访问数据库的一种规范,是一套API ...

  5. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

  6. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  7. 20145330第九周《Java学习笔记》

    20145330第九周<Java学习笔记> 第十六章 整合数据库 JDBC入门 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JD ...

  8. 20145211 《Java程序设计》第九周学习总结——垂死病中惊坐起

    教材学习内容总结 JDBC简介 JDBC是用于执行SQL的解决方案,开发人员使用JDBC的标准接口,数据库厂商则对接口进行操作,开发人员无须接触底层数据库驱动程序的差异性 JDBC标准分为两个部分:J ...

  9. 《Java程序设计》第九周学习总结

    20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...

随机推荐

  1. 异常-----Template user.ftl not found

    freemarker 1.错误描述 java.io.FileNotFoundException: Template user.ftl not found. at freemarker.template ...

  2. Jenkins + Github持续集成构建Docker容器,维基百科&人工自能(AI)模块

    本文分两部分,第一部分是手动计划任务的方式构建Github上的Docker程序,第二部分是用Github webhook Trigger一个自动构建任务. Jenkins采用2.5版本Docker采用 ...

  3. FFT/NTT 总结

    本总结主要用于帮助个人理解,讲得不足之处,还请各位看官谅解 FFT 补充知识 \(n\)次单位复根(\(w_n\)): 使得\(z^n=1\)的一类复数,这些复数一共有\(n\)个,它们都分布在复平面 ...

  4. Luogu4175:[CTSC2008]网络管理Network

    题面 Luogu4175:[CTSC2008]网络管理Network Sol 路径第\(k\)大 无解直接判断就好了 然后整体二分,加上树链剖分+树状数组统计 # include <bits/s ...

  5. java输出日志

    protected final Logger logger = Logger.getLogger(User.class); logger.info("在控制台中打印的内容");

  6. log4j输出日志到数据库中

    1.log4j配置 ###----------------- appender:DATABASE_LOG -----------------#指定输出日志的等级和日志输出范围log4j.logger. ...

  7. Adaboost的意义

    Adaboost是广义上的提升方法(boosting method)的一个特例.广泛应用于人脸识别等领域. 它的基本思想是,“三个臭皮匠赛过诸葛亮”,即用多个弱分类器的线性加权,来得到一个强的分类器. ...

  8. php文件上传原理详解(含源码)

    1.文件上传原理 将客户端的文件上传到服务器,再将服务器的临时文件上传到指定目录 2.客户端配置 提交表单 表单的发送方式为post 添加enctype="multipart/form-da ...

  9. 基于python创建一个简单的HTTP-WEB服务器

    背景 大多数情况下主机资源只有开发和测试相关人员可以登录直接操作,且有些特定情况"答辩.演示.远程"等这些场景下是无法直接登录主机的.web是所有终端用户都可以访问了,解决了人员权 ...

  10. Lintcode221 Add Two Numbers II solution 题解

    [题目描述] You have two numbers represented by a linked list, where each node contains a single digit. T ...