今天写了自己的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命令是一个内置命令。