如果cd尝试切换到不存在的目录-自己的shell,则输出错误

因此,我和我的搭档必须创建我们自己的shell,而cd应该在其中更改目录。我们已经编写并使用此代码来更改目录(如果可能的话),但是我们无法弄清楚在目录不存在的情况下如何解决零件错误的问题。

    //check if cd was typed
if(strcmp(parsed_command->argv[0],"cd") == 0){
    //if more than one argument -> error
    if(parsed_command->argv[2]){
        printf("Too many arguments!");
        free(parsed_command);
        return;
    }
    //read directory
    char* dir = parsed_command->argv[1];
    //execute change and check if error
    if(chdir(dir) == -1){
        perror("cd:");
    }
    //free memory
    free(parsed_command);
    return;
}
DLL33DLL33 回答:如果cd尝试切换到不存在的目录-自己的shell,则输出错误

您已经在使用perror()打印错误。我还没有得到您特别想要的东西。 您可以做的是打印其他信息,例如不存在的目录。 为此,您可以使用fprintf而不是perror并添加自己的信息:

fprintf(stderr,"The dir: %s does not exist.",dir);

请注意,fprintf在此处将stderr用作输出通道。

本文链接:https://www.f2er.com/3006634.html

大家都在问