1. 程式人生 > >PWD的編譯及調試

PWD的編譯及調試

sizeof perror alt 工作目錄 eof 鏈接 命令格式 lin return

PWD的編譯及調試

  • 命令格式:
    pwd [選項]
  • 命令功能:
  • 查看”當前工作目錄“的完整路徑
  • 常用參數:
    一般情況下不帶任何參數
  • 如果目錄是鏈接時:
  • 格式:pwd -P
    顯示出實際路徑,而非使用連接(link)路徑。
    PWD代碼如下:
    ~~~

    include

    include<sys/stat.h>

    include

    include

    include

    include<sys/types.h>

    void printpath();
    char inode_to_name(int);
    int getinode(char
    );
    int main()
    {
    printpath();
    putchar(‘\n‘);
    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的編譯及調試