【发布时间】:2019-05-07 22:13:41
【问题描述】:
我的任务是用 C 语言编写 linux cd 命令。我认为使用 chdir() 方法会很简单,但我的目录并没有改变。有趣的是 chdir() 的返回状态是 0,而不是 -1,这意味着 chdir() 没有失败。这是我使用chdir()的两种情况:
1.
char *dir = getenv("HOME"); // Here dir equals the home environment.
int ret = chdir(dir);
printf("chdir returned %d.\n", ret);
ret 返回 1。
2.
int ret = chdir(dir); // Here dir equals the user's input.
printf("chdir returned %d.\n", ret);
ret 如果目录存在于我的路径中,则返回 1。
我使用chdir() 错了吗?我似乎无法在任何地方找到答案。任何帮助将不胜感激。
【问题讨论】:
-
你如何确定“你的目录没有改变”?
-
你希望它改变你所在的 shell 的目录吗?如果是这样,搜索网络将帮助您。
-
如何检查 cwd 是否未更改?您意识到
chdir()“仅”更改了调用它的进程的 cwd? -
您不能将
cd写为外部实用程序。如果要写一个完整的shell,一定要先避免fork()ing -
@thatotherguy 技术上你可以... 如果移动的外壳知道(可能没有):unix.stackexchange.com/a/94365/23529跨度>