一、实验内容
0 推荐在openEuler中完成
1 学习pwd命令
2 研究pwd实现需要的系统调用(man -k; grep),写出伪代码
3 实现mypwd
4 测试mypwd
二、学习pwd命令
这个链接学习linux的命令不错,分享一下https://www.runoob.com/linux/linux-comm-pwd.html
Linux pwd(英文全拼:print work directory) 命令用于显示工作目录。执行 pwd 指令可立刻得知您目前所在的工作目录的绝对路径名称。
语法:pwd [--help][--version]
- --help 在线帮助。
- --version 显示版本信息。
openEuler下输入man pwd,不知道为啥没有pwd的帮助文档:
换Ubuntu,显示了:
由于pwd命令只有选项,没有参数,因为它的作用是输出当前的工作目录名,所以不需要参数,具体选项:
- -L:--logical,显示当前的路径,有连接文件时,直接显示连接文件的路径,(不加参数时默认此方式)。
- -p:--physical,显示当前的路径(物理路径),有连接文件时,不使用连接路径,直接显示连接文件所指向的文件。
测试:
三、研究pwd实现需要的系统调用(man -k; grep),写出伪代码
在终端中输入man -k directory | grep 2 ,查找与显示当前路径相关的系统调用函数:
其中可以发现一个函数:getcwd()
在终端中输入man 3 getcwd查看帮助文档:
这篇博客对pwd作了详细的阐述:https://blog.csdn.net/chen1415886044/article/details/119846484
实现pwd很简单,只要在程序中使用getcwd()函数就可以实现获得绝对路径的功能了。通过调用getcwd()函数来实现pwd的伪代码如下:
#include <stdio.h>
#include <unistd.h>
getcwd()
{
if (返回的指针==NULL) 调用函数出错,发出错误报告
else 打印结果
}
四、实现mypwd
代码如下:
#include <stdio.h>
#include <unistd.h>
int main(void){
char buff[256];
getcwd(buff,sizeof(buff));
printf("%s\n",buff);
return 0;
}