我是另一个正在研究简单 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, "") ;
我真的很感谢任何帮助/见解。
谢谢。
最佳答案
您可能在输入行的末尾留下了一个'\n'
。您的 strtok
仅将空格识别为分隔符,因此它不会触及换行符。 chdir("dir\n")
将失败,除非您确实有一个名称末尾带有换行符的目录。
关于c - C 中的 Unix Shell - 更改目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19388838/