系统调用和命令提示符之间调用'cd'之间的区别

时间:2013-01-20 03:05:27

标签: c linux

我正在使用linux命令提示符,我注意到在命令提示符中使用命令'cd'并将该命令用作C程序中系统调用的参数时有所不同。

当我使用命令提示符时,目录将更改为$ home环境变量中的目录,但如果我使用系统调用调用它,那么目录不会更改?

为什么会这样?

1 个答案:

答案 0 :(得分:6)

cd命令是内置的shell - 当它由shell脚本执行时或在命令提示符下,它由shell直接解释,并更改shell进程的工作目录。

当您从cd调用中运行system()命令时,该命令将传递给shell子进程,并更改该进程的工作目录,该目录会立即退出。父进程的工作目录保持不变。

如果您需要更改当前流程的工作目录,请直接致电chdir()。请注意,您无法更改其他进程的工作目录(子进程独立于其父进程)。