编程更改进程的当前工作目录[复制](Changing a process's current

2019-10-21 00:34发布

这个问题已经在这里有一个答案:

  • 有没有办法用C语言来更改目录? 6个回答

一些研究之后,我意识到, cd系统命令没有任何实现的文件我的系统上,特别是在/bin/ 。 一类项目最近需要一个基本的外壳程序,可以利用位于此目录中实现文件的执行情况。

必然的,因为我的程序不能改变目录cd不存在,必须由其他壳内部实现。

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

Answer 1:

每一道工序都有其“当前目录”的概念。 当一个新的进程被创建,其当前目录是它的父进程的当前目录。

shell是只是一个过程,没有任何其他方法不同,不同的是这个特定的进程等待你输入一个命令,然后将其作为一个新的进程执行命令输入。

为什么没有任何实际的“CD”命令现在应该成为明显。 说有一个。 因此,您所键入的“CD”命令,shell将执行的“CD”命令作为一个新的进程。

新工艺改变其当前目录中,并退出。

那么,你是怎么做到? 绝对没有。 外壳的当前目录并没有改变。 所有的“CD”的过程会做,在这个假设的情况下,是改变自己的当前目录,而不是其他。 然后,它已结束,一切都回到它以前的方式。

这就是为什么“CD”是一个内置的命令。 这个命令是可以被壳直接执行多个命令之一,该命令将shell的当前目录。 因此,将来的所有流程,从这个shell启动的,现在将有一个新的当前目录。

系统调用改变进程的当前目录是CHDIR(2) 。 C,Perl,Python和和几乎所有其他的编程语言有一定的作用的地方叫CHDIR,或类似的东西,执行系统调用改变进程的当前目录。



文章来源: Changing a process's current working directory programmatically [duplicate]
标签: c linux shell