我的目标是编写一个c程序,它类似于linux的基本shell。除了换工作目录,我什么都能用。我试过为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);
        }
    }

有可能这样做吗?或者这是一个简单的例子,与孩子的壳不能做某些事情有关?
编辑:以上代码已完成。

最佳答案

fgets()'\n'中保留后面的cmdstr字符。
如果您键入cd foo,您将调用chdir("foo\n"),而不是chdir("foo")

关于c - 在C程序中的Linux Shell中更改工作目录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6920483/

10-13 06:40