我正在使用linux命令提示符,我注意到在命令提示符中使用命令'cd'并将该命令用作C程序中系统调用的参数时有所不同。
当我使用命令提示符时,目录将更改为$ home环境变量中的目录,但如果我使用系统调用调用它,那么目录不会更改?
为什么会这样?
答案 0 :(得分:6)
cd
命令是内置的shell - 当它由shell脚本执行时或在命令提示符下,它由shell直接解释,并更改shell进程的工作目录。
当您从cd
调用中运行system()
命令时,该命令将传递给shell子进程,并更改该进程的工作目录,该目录会立即退出。父进程的工作目录保持不变。
如果您需要更改当前流程的工作目录,请直接致电chdir()
。请注意,您无法更改其他进程的工作目录(子进程独立于其父进程)。