我的任务是用c语言编写linuxcd
命令,我认为使用chdir()
方法会很简单,但我的目录不会改变。有趣的是chdir()的返回状态是0,而不是-1,这意味着chdir()没有失败。下面是我使用chdir()
的两个案例:
一。
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()
仅更改调用进程的工作目录。
所以当你有像…
int main() {
// 1
chdir("/"); // error handling omitted for clarity
// 2
}
…把它编译成一个程序,然后在shell中运行:
$ pwd # 3
/home/sweet
$ ./example # 4
$ pwd # 5
/home/sweet
你有两个过程在起作用,
您输入
example
和pwd
的shell./example
,使用编译程序启动的进程(由shell启动)。./example
是编译程序的一部分,而不是shell,因此它只影响程序的进程,而不是shell。因此,在
chdir()
处,程序的工作目录(在上面的示例运行中)是// 1
,但在/home/sweet
处,它是// 2
,如上面的/
调用所指定。但这并不影响shell和chdir()
的输出!关于c - C语言中的cd命令和chdir()的使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56031104/