[英]Unix Shell in C - Change Directory
我是使用简单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]
的标记化参数部分: char strnBuffer[1000]
,该char strnBuffer[1000]
已为命令标记化: command[0] = strtok(strnBuffer, " ");
我非常感谢您的帮助/见解。
谢谢。
您可能在输入行的末尾有一个'\\n'
。 您的strtok
仅将空格识别为分隔符,因此不会碰到换行符。 chdir("dir\\n")
将会失败,除非您实际上有一个目录,其名称末尾带有换行符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.