• mypwd


    0 推荐在openEuler中完成
    1 学习pwd命令
    2 研究pwd实现需要的系统调用(man -k; grep),写出伪代码
    3 实现mypwd
    4 测试mypwd
    
    提交过程博客的链接或截图
     1.学习pwd命令
    ·pwd命令功能为输出当前所在工作目录的绝对路径名称
    ·绝对路径和相对路径
     
    绝对路径:从根目录开始直到文件位置
    相对路径:相对于程序当前所在目录到文件位置

     2.系统手册的查询

    ·man pwd命令查看pwd的详细功能

       ·pwd中有两个带参数的执行方式分别为pwd -l和pwd -p

          pwd -l功能为从环境中执行PWD命令,即使它包含符号链接

          pwd -p功能为避免所有符号链接,执行pwd命令。

    分别执行两个命令,结果无区别,发现是因为路径中无特殊符号链接

     通过man getcwd命令查看getcwd函数功能

    • char *getcwd(char *buf, size_t size); 该函数的第一个参数为数组首地址,第二个参数为空间值;

    • 该函数返回一个以null结尾的字符串,其中包含一个绝对路径名,该路径名是调用进程的当前工作目录。

    3.使用getcwd命令实现pwd功能

    #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>
    
    int main(void)
    {
        char buf[1024];
    
        char *cwd =getcwd(buf, sizeof(buf));
    
        if (cwd == NULL) {
            perror("Get cerrent working directory fail.\n");
            exit(-1);
        } else {
            printf("%s\n", cwd);
        }
    
        return 0;
    }

    测试结果:

    ·伪代码

    获取初始目录名称
    next:
        获取当前目录的icode_number
        通过chdir() 返回上一级目录
        获得上一级目录的icode_number_ago
        icode_number==icode_number_ago ?
        不相等:
            获取当前目录名称
            返回next
        相等
            已经找到根目录,输出绝对路径
  • 相关阅读:
    max_element( )
    dp
    dfs
    dp
    区间dp
    树形dp
    dp-最长回文串
    go 结构体函数
    go 结构体初始化
    Golang数组和切片的区别
  • 原文地址:https://www.cnblogs.com/syf0105/p/16806339.html
Copyright © 2020-2023  润新知