以编程方式更改进程的当前工作目录

雪莱尔贝克

经过一番研究,我意识到cdsystem命令在我的系统上没有任何实现文件,特别是在中/bin/一个类项目最近需要实现一个基本的shell程序,该程序可以利用此目录中的实现文件。

因此,我的程序无法更改目录,因为该目录cd不存在,并且必须已由其他Shell内部执行。

话虽这么说,您将如何以编程方式更改程序的当前工作目录?

山姆·瓦尔沙夫奇克

每个单独的进程都有其“当前目录”的概念。创建新进程时,其当前目录是其父进程的当前目录。

Shell只是另一个进程,与任何其他进程都没有什么不同,除了该特定进程等待您键入命令,然后将键入的命令作为新进程执行。

现在应该明白为什么没有任何实际的“ cd”命令了。说有一个。因此,您键入了“ cd”命令,并且外壳程序将“ cd”命令作为新进程执行。

新进程将更改其当前目录,然后退出。

那么,您完成了什么?绝对没有。Shell的当前目录未更改。在这种假设的情况下,“ cd”过程所要做的就是更改其自己的当前目录,而没有其他操作。然后终止,一切恢复到以前的样子。

这就是为什么“ cd”是内置命令的原因。此命令是直接由Shell执行的几个命令之一,此命令可更改Shell的当前目录。因此,从该Shell启动的所有将来的进程现在都将具有一个新的当前目录。

更改进程当前目录的系统调用是chdir(2)C,Perl,Python和几乎所有其他编程语言在chdir或类似的地方都有一些功能,该功能执行更改进程当前目录的系统调用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章