全部博文(245)
分类: LINUX
2009-04-01 21:13:15
|
今天在做shell命令解释器的时候,在解释内部命令cd的时候,遇到一个问题,在子进程中调用chdir()改变当前目录,发现无法改变当前进程。 调用过程如下:
|
后来跟踪发现不能改变的原因:
在父进程中创建子进程后,子进程会有自己的运行空间,而每个进程运行空间处理保存进程运行的代码、数据、堆栈信息外,还有保存该进程运行环境的环境变量信息,如果通过调用chdir(),改变的只是当前进程的当前目录,当子进程调用结束后,既exit()推出后,进程运行环境即被消亡,而父进程的运行环境并没有发生改变, 实质情况就是调用chdir(),改变的只是子进程的当前目录,子进程运行结束后,返回父进程,父进程的当前目录并没有该gaibian。
需要以后注意的问题:
多线程 多进程编程中,子线程 子进程的运行空间。