在C程序中的Linux Shell中更改工作目录

我的目标是编写一个类似于Linux的基本Shell的C程序。除了更改工作目录外,我一切正常。我已经尝试了system()for输入字符串cd,但没有任何反应。我也尝试过chdir("tokened

string"),也没有运气。谁有想法?这是我的代码的一部分:

        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);

}

}

是否有可能做到这一点?还是这是与子外壳无法执行某些操作有关的简单情况?

编辑:上面的代码已完成。

回答:

fgets()将结尾'\n'字符留在中cmdstr

如果您键入cd foo,您会打电话chdir("foo\n")而不是chdir("foo")

以上是 在C程序中的Linux Shell中更改工作目录 的全部内容, 来源链接: utcz.com/qa/401809.html

回到顶部