一个进程的生与死

Windows中的资源管理器其实是一个Shell.在资源管理器里面双击执行一个App实际上是shell 调用CreateProcess 创建一个进程

1.shell调用CreateProcess激活App.exe

2.系统产生一个“进程核心对象”,计数值为1.

3.系统为此进程建立一个4GB的地址空间。

4.加载器将必要的代码加载到上述地址空间中,包括App.exe的程序,数据,已经所需要的动态连接库。这些动态连接库的信息被记录在可执行文件里面

5.系统为此建立一个线程,主线程。

6.系统调用C runtime函数库的Startup code.

7.Startup code调用App.exe程序的WinMain函数.

8.App开始运行

9.使用者关闭App主窗口,使WinMain中的消息循环结束,WinMain结束.

10.回Startup code.

11.回到系统,系统调用ExitProcess结束进程.

shell在调用CreateProcess的时候已经把父子进程之间的关系切断。

posted @ 2012-06-14 02:14  桥边红药  Views(192)  Comments(0)    收藏  举报