C中的cd命令和chdir()的使用
The cd command in C and use of chdir()
我的任务是用 C 语言编写 linux cd
命令。我认为使用 chdir()
方法会很简单,但我的目录没有改变.有趣的是 chdir() 的 return 状态是 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
returns 1.
2.
int ret = chdir(dir); // Here dir equals the user's input.
printf("chdir returned %d.\n", ret);
ret
returns 1 如果目录存在于我的路径中。
我使用chdir()
错了吗?我似乎无法在任何地方找到答案。任何帮助将不胜感激。
chdir()
仅更改调用进程的工作目录。
所以当你有像...
这样的代码时
int main() {
// 1
chdir("/"); // error handling omitted for clarity
// 2
}
... 并将其编译为程序 example
然后 运行 它在 shell:
$ pwd # 3
/home/sweet
$ ./example # 4
$ pwd # 5
/home/sweet
那么你有两个进程在起作用,
shell,这是您输入 pwd
和 ./example
的地方
./example
,用你的编译程序启动的进程(由 shell)。
chdir()
是编译程序的一部分,而不是 shell,因此它只影响程序的进程,不 shell.
因此,在 // 1
您的程序的工作目录(在上面的示例 运行 中)是 /home/sweet
,但在 // 2
是 /
如上面的 chdir()
调用中指定的那样。不过,这不会影响 shell 和 pwd # 5
的输出!
我的任务是用 C 语言编写 linux cd
命令。我认为使用 chdir()
方法会很简单,但我的目录没有改变.有趣的是 chdir() 的 return 状态是 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
returns 1.
2.
int ret = chdir(dir); // Here dir equals the user's input.
printf("chdir returned %d.\n", ret);
ret
returns 1 如果目录存在于我的路径中。
我使用chdir()
错了吗?我似乎无法在任何地方找到答案。任何帮助将不胜感激。
chdir()
仅更改调用进程的工作目录。
所以当你有像...
这样的代码时int main() {
// 1
chdir("/"); // error handling omitted for clarity
// 2
}
... 并将其编译为程序 example
然后 运行 它在 shell:
$ pwd # 3
/home/sweet
$ ./example # 4
$ pwd # 5
/home/sweet
那么你有两个进程在起作用,
shell,这是您输入
pwd
和./example
的地方
./example
,用你的编译程序启动的进程(由 shell)。
chdir()
是编译程序的一部分,而不是 shell,因此它只影响程序的进程,不 shell.
因此,在 // 1
您的程序的工作目录(在上面的示例 运行 中)是 /home/sweet
,但在 // 2
是 /
如上面的 chdir()
调用中指定的那样。不过,这不会影响 shell 和 pwd # 5
的输出!