zoukankan      html  css  js  c++  java
  • 20155305mypwd的实现和测试

    20155305mypwd的实现和测试

    pwd命令及其功能

    • 命令格式:
    pwd 
    
    • 命令功能:
      查看”当前工作目录“的完整路径
    • 常用参数:
      一般情况下不带任何参数

    作业mypwd代码实现

    • 在课堂上老师讲解了目录其实也是一种文件,只不过这种文件比较特殊,它里面存储的是一张对应表,即文件名和i节点的对应关系表,而i节点才是记录此文件详细信息的结构,如文件大小,属性,权限,存在硬盘的那个块等。
      我们在一个目录创建文件就是在这张表里添加对应关系而已,使用某个文件时也是根据i节点确定在硬盘的实际存储位置的。
    #include<stdio.h>  
    #include<sys/stat.h>  
    #include<sys/types.h>  
    #include<dirent.h>  
    #include<stdlib.h>  
    #include<string.h>  
      
    #define SIZE 128  
      
    ino_t get_inode(char *dirname);  
    void get_work_dir(ino_t inode_num);  
    void inode_to_dirname(ino_t inode_num, char *buf, int buflen);  
      
    int main(void)  
    {  
        get_work_dir(get_inode("."));     
        printf("
    ");  
        return 0;  
      
    }  
      
    ino_t get_inode(char *dirname)  
    {  
        struct stat info;  
        if (stat(dirname, &info) == -1)  
        {  
            perror("dirname");  
            exit(1);  
        }  
      
        return info.st_ino;  
    }  
      
    void get_work_dir(ino_t inode_num)  
    {  
        ino_t parent_inode;  
        char buf[SIZE];  
        if (get_inode("..") != inode_num)  
        {  
            chdir("..");  
            inode_to_dirname(inode_num, buf, SIZE);  
            parent_inode = get_inode(".");  
            get_work_dir(parent_inode);  
            printf("/%s", buf);  
        }  
    }  
      
    void inode_to_dirname(ino_t inode_num, char *buf,int buflen)  
    {  
        DIR *dir_ptr;  
        struct dirent *dire;  
        if ((dir_ptr = opendir(".")) == NULL)  
        {  
            perror(".");  
            exit(1);  
        }  
      
        while ((dire = readdir(dir_ptr)) != NULL)  
        {  
            if (dire->d_ino == inode_num)  
            {  
                strncpy(buf, dire->d_name, buflen);  
                buf[strlen(buf)] = '';  
                closedir(dir_ptr);  
                return ;  
            }  
        }  
        fprintf(stderr, "error looking for inode number %d
    ", (int)inode_num);  
        exit(1);  
    }  
    

  • 相关阅读:
    如何通过logcat查看系统程序的意图
    jmeter测试本地myeclips调试状态下的tomcat程序死锁
    利用开源项目使discus论坛与java应用同步登录和注册
    hibernate映射文件基础
    长沙理工大学校园网客户端无法卸载解决办法
    26个Jquery使用小技巧
    eclipse 书签
    Notepad++ 书签
    【转】不提拔你,就因为你只想把工作做好
    自己开发开源jquery插件--给jquery.treeview加上checkbox
  • 原文地址:https://www.cnblogs.com/20155305ql/p/7859744.html
Copyright © 2011-2022 走看看