0

我是另一个使用简单 Shell 的 CS 初学者。目前,如果传递了参数,我正在尝试更改当前目录,否则,报告到当前目录。

我尝试chdir()在我的程序中使用,但它显然不起作用。我尝试传递一个char*标记化的参数。我也尝试过argv[1],但我一定做错了什么,因为似乎两者都不起作用。

另外,我不完全确定如何使参数指针(包含目录字符串)静态,以便当我使用 putenv(ARGUMENT HERE) 时没有问题。

这是我的代码的相关部分:

else if (strncmp(command[0], "cd", 2) == 0)
    {
        char *argmnts = strtok(0, " ");

        if (arguments != NULL)
        {
            chdir(argmnts); 
            putenv(argmnts); // THE ARG STRING NEEDS TO BE A STATIC COPY
            getcwd(promptBuff, sizeof(argmnts));
        }
    }

指针 argmnts 指向标记化参数部分来自:char strnBuffer[1000]已经为命令标记化:command[0] = strtok(strnBuffer, " ");

我非常感谢任何帮助/见解。

谢谢你。

4

1 回答 1

0

您可能'\n'在输入行的末尾有一个剩余部分。您strtok唯一将空格识别为分隔符,因此它不会触及换行符。chdir("dir\n")除非您实际上有一个名称末尾带有换行符的目录,否则将失败。

于 2013-10-15T23:51:18.173 回答