我创建的自定义 shell cd 命令出现问题。现在我正在测试 cd 是唯一参数的基本情况,在这种情况下,它应该将默认目录更改为 /home 目录。它一直导致错误“ERROR Home”,所以我现在正在执行命令 cd,但它没有更改目录。
if(strcmp(command[0], "cd") == 0)
{
int check;
if(command[1] == NULL)
{
check = chdir("/home");
if(check != 0)
{
printf(" ERROR Home \n ");
}
}
else
{
check = chdir(command[1]);
if(check != 0)
{
printf("error command\n");
}
}
} // end if
我是否忽略了会导致此运行时错误的某些内容?
这是更新的屏幕截图,当我尝试不同的方式输入命令时发生的情况,我在尝试执行之前添加了一条打印行以查看命令中的内容[0]。我的退出命令不起作用 cd
答案1
chdir() 在其返回状态中告诉您错误是什么,但您没有将其放入错误消息中。阅读 perror(3) 库调用,了解如何显示友好的错误消息。
答案2
我明白了,我有一个双重 if 语句。将第二个 if 更改为 else if 并且它运行!感谢你付出的努力