我的目标是编写一个类似于Linux的基本Shell的C程序。除了更改工作目录外,我一切正常。我已经尝试了system()for输入字符串cd,但没有任何反应。我也尝试过chdir("tokened string"),也没有运气。谁有想法?这是我的代码的一部分:
system()
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。
fgets()
'\n'
cmdstr
如果您键入cd foo,您会打电话chdir("foo\n")而不是chdir("foo")。
cd foo
chdir("foo\n")
chdir("foo")