mypwd的实现

一、实验内容

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;
}

五、openEuler下测试mypwd

posted @ 2022-10-19 19:22  acacacac  阅读(22)  评论(0编辑  收藏  举报