首页 > 其他分享 >实现mypwd

实现mypwd

时间:2022-10-22 12:13:34浏览次数:47  
标签:实现 代码 getcwd char pwd mypwd man size

实验内容
1.学习pwd命令
2.研究pwd实现需要的系统调用(man -k; grep),写出伪代码
3.实现mypwd
4.测试mypwd

实践过程
学习pwd命令
1.pwd命令功能
Linux中,pwd命令用于显示工作目录。
执行pwd指令可立刻得知您目前所在的工作目录的绝对路径名称。

2.查看参数
通过 man pwd 可以得知,可以使用 man pwd 了解pwd的相关信息

由此可知pwd参数功能:
-L:--logical,显示当前的路径,有连接文件时,直接显示连接文件的路径,(不加参数时默认此方式),参考示例1。
-p:--physical,显示当前的路径,有连接文件时,不使用连接路径,直接显示连接文件所指向的文件,参考示例2。 当包含多层连接文件时,显示连接文件最终指向的文件,参考示例3。
--help:显示帮助信息。
--version:显示版本信息。

研究pwd实现需要的系统调用(man -k; grep)
1.查看相关系统调用函数信息:man -k dir | grep 2

2.使用 man 2 chdir 查看chdir的相关信息。

可知:int chdir(const char *path )---用于改变当前工作目录,调用参数是指向目录的指针,调用进程需要有搜索整个目录的权限

3.使用 man getcwd 查看getcwd的相关信息。

找到所需要的头文件以及函数原型

#include <unistd.h>
char *getcwd(char *buf, size_t size);

图中getcwd():getcwd(char *buf,size_t size)是将当前工作目录的绝对路径复制到参数buffer所指的内存空间中,参数size为buf的空间大小。

代码
1.伪代码描述
因为调用getcwd后将解决绝对路径的问题,代码也会变得十分简单,所以伪代码描述:

一个字符串数组储存绝对路径
调用函数getcwd()
if (返回的指针==NULL)
    调用函数出错,发出错误报告
else
    打印结果

2.代码

#include <stdio.h>
#include <unistd.h>
int main(void)
{
    char buff[256];
    getcwd(buff,sizeof(buff));
    printf("%s\n",buff);
    return 0;
}

代码测试

用getcwd()函数应该是非常简单的一种方法了。

标签:实现,代码,getcwd,char,pwd,mypwd,man,size
From: https://www.cnblogs.com/wxl2761407387/p/16815771.html

相关文章