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

用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;
}