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

yae*_*omb 1 c linux directory shell

我的目标是编写一个类似于Linux的基本shell的C程序.除了更改工作目录外,我一切正常.我已经尝试了system()输入字符串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);
        }
    }
Run Code Online (Sandbox Code Playgroud)

是否有可能做到这一点?或者这是一个与子shell无法做某些事情有关的简单案例?

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

Kei*_*son 5

fgets()留下尾随'\n'字符cmdstr.

如果你打字cd foo,你会打电话chdir("foo\n")而不是打电话chdir("foo").