一尘不染

在C程序中的Linux Shell中更改工作目录

linux

我的目标是编写一个类似于Linux的基本Shell的C程序。除了更改工作目录外,我一切正常。我已经尝试了system()for输入字符串cd,但没有任何反应。我也尝试过chdir("tokened string"),也没有运气。谁有想法?这是我的代码的一部分:

        fgets(cmdStr, sizeof(cmdStr), stdin);

        if( strncmp("quit", cmdStr, 4) == 0 || strncmp("Quit", cmdStr, 4) == 0  )
        {
            break;
        }
        else if( strncmp("cd", cmdStr, 2) == 0 )
        {
            char *token = strtok(cmdStr, " ");
            token = strtok(NULL, " ");
            chdir(token);
        }
        else
        {
            system(cmdStr);
        }
    }

是否有可能做到这一点?还是这是与子外壳无法执行某些操作有关的简单情况?

编辑:上面的代码已完成。


阅读 369

收藏
2020-06-03

共1个答案

一尘不染

fgets()将结尾'\n'字符留在中cmdstr

如果您键入cd foo,您会打电话chdir("foo\n")而不是chdir("foo")

2020-06-03