今天寫了自己的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命令是一個內置命令。