zoukankan      html  css  js  c++  java
  • 实现mypwd

    实现mypwd

    要求:

    1 学习pwd命令

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

    3 实现mypwd

    4 测试mypwd

    学习pwd命令

    • 首先是用man命令学习pwd。

    • 在不太确定当前位置时,就会使用pwd来判定当前目录在文件系统内的确切位置。

    1.命令格式:

    pwd [选项]

    显示当前目录的物理路径: pwd –P

    显示当前目录的连接路径:pwd -L

    2.命令功能:

    查看”当前工作目录“的完整路径

    3.常用参数:

    一般情况下不带任何参数

    如果目录是链接时:

    格式:pwd -P 显示出实际路径,而非使用连接(link)路径。

    linux系统下pwd命令用法详解

    伪代码

    • 1.获取当前i-Node
    • 2.从根目录中找到和i-Node相同的值
    • 3.用i-Node向前递归
    • 4.输出路径

    实现mypwd

    #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) {    
        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);  
    }
    

    测试mypwd

  • 相关阅读:
    Java中break和continue跳出指定循环
    Linux命令对应英文全称
    linux 使用 rz 和 sz 命令
    linux tail命令的使用方法详解
    Linux常用命令大全(非常全!!!)
    正则 函数
    行级锁 java||数据库
    mysql插入操作跳过(ignore)、覆盖(replace into)、更新(on duplicate key)
    MYSQL 常用【函数】大全
    MySQL中INFORMATION_SCHEMA
  • 原文地址:https://www.cnblogs.com/fixedl/p/7841095.html
Copyright © 2011-2022 走看看