日期:2014-05-16  浏览次数:20989 次

用chdir()写一函数实现cd()功能
如题

------解决方案--------------------
你需要用到一系列函数。
目录其实也是一个文件,内容就是里面的文件名等信息。只不过不能用一般的fopen函数来打开。
opendir()
readdir()
closedir() 
chdir()

怎么用的话google一下吧。
------解决方案--------------------
#include<stdio.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <errno.h>
#include <sys/stat.h>
int analyseCmd(char *p);
int main(void)
{
char cmd[1001];
char result[101];
while(1)
{
memset(cmd, 0, 1000);
printf("ysh>");
fgets(cmd, 1000, stdin);
cmd[strlen(cmd)-1]=0;
if(analyseCmd(cmd)==1)
{
if(chdir(cmd + 3) != 0) {//从3开始就是转换工作空间的路径
printf("chdir(%s) error!%s\n", cmd + 3, strerror(errno));
}
printf("I'm working in '%s' now\n", getcwd(result, 100));
}
else if(analyseCmd(cmd)==2)
break;
else
printf("Bad command, try again!");
break;
}
return 0;
}

int analyseCmd(char *p)
{
if(!strncasecmp(p,"cd",2))
return 1;
if(!strncasecmp(p,"exit",2))
return 2;
else return 0;
}