我的目标是编写一个类似于Linux的基本shell的C程序。除了更改工作目录之外,我有一切工作。我试过system()
输入字符串为cd
并没有发生任何事情。我也试过chdir("tokened string")
也没有运气。有人有主意吗?这是我的代码的一部分:在C程序中更改Linux shell中的工作目录
fgets(cmdStr, sizeof(cmdStr), stdin);
if(strncmp("quit", cmdStr, 4) == 0 || strncmp("Quit", cmdStr, 4) == 0 )
{
break;
}
else if(strncmp("cd", cmdStr, 2) == 0)
{
char *token = strtok(cmdStr, " ");
token = strtok(NULL, " ");
chdir(token);
}
else
{
system(cmdStr);
}
}
是否有可能这样做?或者这是一个简单的例子,与儿童外壳不能做某些事情有关吗?
编辑:上面的代码是完整的。
'chdir'是正确的。它的回报价值是多少?如果-1,errno是什么? (总是检查系统调用的返回值。) – Nemo
@Nemo无论字符串是什么,返回值都是-1。多次尝试不同的字符串。不知道如何检查它与-1一起产生的错误。有什么建议么? – yaegerbomb
检查errno – hari