zoukankan      html  css  js  c++  java
  • Mypwd 的解读与实现 20155208

    Mypwd 的解读与实现 20155208

    linux下pwd命令的编写

    实验要求:

    1 、学习pwd命令

    2 、 研究pwd实现需要的系统调用(man -k; grep),写出伪代码

    3 、实现mypwd

    4 、测试mypwd

    对pwd的了解

    • 以绝对路径的方式显示用户当前工作目录,命令将当前目录的全路径名称(从根目录)写入标准输出, 全部目录使用/分隔,第一个/表示根目录, 最后一个/ 表示当前目录。 执行pwd 命令可以立刻知道目前所在的工作目录的绝对路径名称。
    • pwd--输出当前或者工作目录

    SYNOPSIS

    pwd [OPTION]

    DESCRIPRION

    输出当前工作目录的全文件名

    -help : 显示帮助信息

    -version : 输出帮助信息

    • 参数:

    -P: 查看当前目录的真实物理目录

    -L:查看当前目录的逻辑目录

    pwd的实现:

    1、由于在Linux/Unix文件系统中,每个文件对应的inode值都是唯一的。

    2、注意一点,chdir()这个系统调用,是改变当前程序的工作目录,不是改变bash的工作目录,这是不一样的。

    • 源代码:
    #include<stdio.h>  
    #include<sys/stat.h>  
    #include<dirent.h>  
    #include<stdlib.h>  
    #include<string.h>  
    #include<sys/types.h>  
    void printpath();  
    char *inode_to_name(int);  
    int getinode(char *);  
    int main()  
    {  
        printpath();  
        putchar('
    ');  
        return ;  
    }  
    void printpath()  
    {  
        int inode,up_inode;  
        char *str;  
        inode = getinode(".");  
        up_inode = getinode("..");  
        chdir("..");  
        str = inode_to_name(inode);  
        if(inode == up_inode) {  
        //  printf("/%s",str);  
            return;  
        }  
        printpath();  
        printf("/%s",str);  
    }  
    int getinode(char *str)  
    {  
        struct stat st;  
        if(stat(str,&st) == -1){  
            perror(str);  
            exit(-1);  
        }  
        return st.st_ino;  
    }  
    char *inode_to_name(int inode)  
    {  
        char *str;  
        DIR *dirp;  
        struct dirent *dirt;  
        if((dirp = opendir(".")) == NULL){  
            perror(".");  
            exit(-1);  
        }  
        while((dirt = readdir(dirp)) != NULL)  
        {  
            if(dirt->d_ino == inode){  
                str = (char *)malloc(strlen(dirt->d_name)*sizeof(char));  
                strcpy(str,dirt->d_name);  
                return str;  
            }  
        }  
        perror(".");  
        exit(-1);  
    }

    运行成功截图:

    实验感想:

    这次的实验让我对pwd命令进行了更深层次的了解,懂得了他的使用原理,并且用C语言进行了实现,收获很多。

  • 相关阅读:
    python连接集群mongodb,封装增删改查
    selenium截屏操作(也支持截长图)
    ant生成jmeter测试报告没有数据【已解决】
    论自动化如何提高测试工作效率
    研究显示情商高的人比智商高的可怕多了
    提高程序员职场价值的10大技巧
    革命就是请客吃饭(案例分析吧)
    开发者应该了解的API技术清单!
    陈天:如何快速掌握一门技术
    程序员如何参与创业
  • 原文地址:https://www.cnblogs.com/xuzihan/p/7856073.html
Copyright © 2011-2022 走看看