mycd命令

      今天寫了自己的ls命令,完了以後突發奇想,想寫一個自己的cd命令,查了以下還真的有函數來實現修改當前的工作目錄,chdir函數。下面根據man手冊給出這個函數的詳細解釋信息。
      函數描述:改變工作路徑
      函數頭文件和定義:#include <unistd.h>
                              int chdir(const char * path)
      函數參數描述:path表示要改變的路徑。
      返回值描述:成功返回0,失敗返回-1;
      下面貼出我的代碼:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

char * cd_get_path(int argc,char** argv,char *path)
{

        path = (char *)malloc(100);
        if(argc ==1)
        {
                strcpy(path,"/home/shiwen/");
        }

        else
        {
                strcpy(path,argv[1]);
        }

}

int main(int argc,char ** argv)
{
        char *path;
        int result;

        path = (char *)malloc(100);

        path = cd_get_path(argc,argv,path);

        result = chdir(path);

        if(result == -1)
        {
                printf("change dir error\n");
                return -1;
        }

}

    運行完了以後發現,當前工作路徑也沒改變程序也沒報錯。查了資料發現了,chdir只能改變調用該函數的工作路徑,並不能改變別的進程的工作路徑,所以我們常用的cd命令是一個內置命令。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章