0

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

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

为什么会这样?

4

1 回答 1

6

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

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

如果需要改变当前进程的工作目录,chdir()直接调用。请注意,您不能更改其他进程的工作目录(子进程独立于其父进程)。

于 2013-01-20T03:08:37.137 回答