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 相等 已经找到根目录,输出绝对路径
标签:getcwd,number,绝对路径,命令,pwd,mypwd From: https://www.cnblogs.com/syf0105/p/16806339.html