zoukankan      html  css  js  c++  java
  • 实现mypwd-20175218

    实现mypwd-20175218

    1、要求:

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

    2、完成过程

    1.学习pwd命令

    (一)pwd命令功能:

    • Linux中,pwd命令用于显示工作目录。
    • 执行pwd指令可立刻得知您目前所在的工作目录的绝对路径名称。

    (二)查看参数:

    • 通过 man -k pwd 可以得知,可以使用 man 1 pwd 了解pwd的相关信息

    • 输入 man 1 pwd ,得知pwd的相关参数信息

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

    • 使用 man -k dir | grep 2 查看相关系统调用函数信息

    • 使用 man 2 chdir 查看chdir的相关信息。可知:int chdir(const char *path )---用于改变当前工作目录,调用参数是指向目录的指针,调用进程需要有搜索整个目录的权限。

    • 使用 man 2 getcwd 查看getcwd的相关信息。可知:getcwd(char *buf,size_t size)---将当前工作目录的绝对路径复制到参数buffer所指的内存空间中,参数size为buf的空间大小

    • 使用 man 2 readdir 查看readdir的相关信息。可知:readdir(DIR* dir)---返回参数dir 目录流的下个目录进入点

    通过上面所查看的信息,可以用getcwd()和readdir()来实现的伪代码,如下:

    • 对于getcwd():

      • 定义一个缓冲区数组buf[MAXPATH]
      • 调用getcwd(buf, MAXPATH)
      • 输出返回值即为路经
    • 对于readdir():

      • 通过特殊的文件名"."获取当前目录的inode-number
      • 通过特殊的文件名".."获取当前目录的上一级目录的inode-number
      • 判断当前目录和上一级目录的inode-number是否一样
      • 如果两个inode-number一样说明达到根目录,输出完整路径,退出程序
      • 如果两个inode-number不一样,切换至上一级目录,根据第一步获取的inode-number,在上一级目录中搜索对应的文件名并记录下来,然后重新回到第一步

    3.实现mypwd

    代码链接:

    对于getcwd()即mypwd1.c

    对于readdir()即mypwd2.c

    4.测试mypwd

    对于getcwd():

    对于readdir():

    3、代码托管

    码云链接

    4、参考资料

    1、Linux命令速查手册

    2、Linux命令详解之—pwd命令

  • 相关阅读:
    工厂方法模式
    简单工厂模式
    页面滚动动画
    JAVA的深浅拷备
    雷哥架构师课程大钢
    字节与字符串转换
    商城图片懒加载
    MYSQL数据库类型与JAVA类型对应表
    微信支付二码生成办法
    项目中dubbo的标准配置
  • 原文地址:https://www.cnblogs.com/cjy-123/p/12026171.html
Copyright © 2011-2022 走看看