码迷,mamicode.com
首页 > 其他好文 > 详细

实现mypwd

时间:2019-12-14 18:49:41      阅读:95      评论:0      收藏:0      [点我收藏+]

标签:学习   ret   过程   研究   image   nod   node   需要   http   

实现mypwd

内容要求

  • 学习pwd命令

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

  • 实现mypwd

  • 测试mypwd

pwd学习过程

  • 使用 man -k pwd 查看使用说明,其简要介绍为 pwd (1) - print name of current/working directory,即为打印正在工作或最近的文件夹名
    技术图片

  • 试输入命令 pwd
    技术图片

  • 使用 man 1 pwd 查看具体使用方法
    技术图片

  • 参数学习

    • pwd [-L] 如果 PWD 环境变量包含了不包含文件名 .(点)或 ..(点点)的当前目录的绝对路径名,则显示 PWD 环境变量的值。否则,-L 标志与 -P 标志一样运行。
      技术图片

    • pwd [-p]显示当前目录的绝对路径名。与 -P 标志一起显示的绝对路径不包含在路径名的绝对路径中涉及到符号链接类型的文件的名称。
      技术图片

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

  • 使用 man -k pwd 未发现任何系统调用

  • 使用 man -k current directory | grep 2 以pwd的相关描述作为关键词进行查找,并筛选系统调用,查找到一个系统调用命令 getcwdreaddir 都很符合要求
    技术图片

  • 使用 man -2 getcwd命令查看具体使用方法
    技术图片

    • 头文件及函数,其中getcwd()会将当前的工作目录绝对路径复制到参数buf所指的内存空间,参数size 为buf 的空间大小。
    #include <unistd.h>
    char *getcwd(char *buf, size_t size);
    • getcwd伪代码
    char *buf;
    getcwd(buf,sizeof(buf));
    prin(buf);
  • 使用 man -2 readdir命令查看具体使用方法
    技术图片

  • 根据文档提示,使用 man 3 readdir查看
    技术图片

    • 头文件及函数
    #include <direct.h>
    struct dirent *readdir(DIR *dirp);
    • 其中,dirent的结构体如下
     struct dirent {
                 ino_t          d_ino;       /* inode number */
                 off_t          d_off;       /* not an offset; see NOTES */
                 unsigned short d_reclen;    /* length of this record */
                 unsigned char  d_type;      /* type of file; not supported
                                                by all filesystem types */
                 char           d_name[256]; /* filename */
             };

实现pwd

     
    #include "stdio.h"
    #include "unistd.h"
    int main(void)
    {
        char buf[256];
        getcwd(buf,sizeof(buf));
        printf("当前路径为:%s\n",buf);
        return 0;
    } 

测试pwd

技术图片

实现mypwd

标签:学习   ret   过程   研究   image   nod   node   需要   http   

原文地址:https://www.cnblogs.com/orii/p/12040363.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!