system ("cd ..");
Run Code Online (Sandbox Code Playgroud)
这不会产生任何错误,但也没有做任何有意义的事情.为什么?
该system()函数fork()创建一个进程,作为初始进程的副本.
在当前目录取决于工艺(它是存储过程的环境变量中)的环境.因此,当孩子的过程,有它自己的环境,使人cd,只影响了孩子的过程,而不是父母.
父进程:在/ home/x/y中
子进程(在fork之后):in/home/x/y
cd ..在子进程中执行a 将其本地环境设置为/ home/x
但是父进程仍在/ home/x/y中
父进程等待子进程完成system调用,然后继续自己的执行,使其自己的环境(当前目录)保持不变.