繁体   English   中英

C中的Unix Shell-更改目录

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM