关于进程
进程的组成:
1 内核对象,存放关于进程统计信息的地方
2 地址空间 包含可执行模块和dll模块的代码和数据。还有动态分配的空间。如线程堆栈和堆分配空间。
主线程的进入点函数:即m a i n、w m a i n、Wi n M a i n或w Wi n M a i n
1 进程终止运行时的事件
当进程终止运行时,下列操作将启动运行:
1) 进程中剩余的所有线程全部终止运行。
2) 进程指定的所有用户对象和G D I对象均被释放,所有内核对象均被关闭(如果没有其他 进程打开它们的句柄,那么这些内核对象将被撤消。但是,如果其他进程打开了它们的句柄, 内核对象将不会撤消)。
3) 进程的退出代码将从S T I L L _ A C T I V E改为传递给E x i t P r o c e s s或Te r m i n a t e P r o c e s s的代码。
4) 进程内核对象的状态变成收到通知的状态(关于传送通知的详细说明,参见第9章)。系 统中的其他线程可以挂起,直到进程终止运行。
5) 进程内核对象的使用计数递减1。
注意,进程的内核对象的寿命至少可以达到进程本身那么长,但是进程内核对象的寿命可能大大超过它的进程寿命。当进程终止运行时,系统能够自动确定它的内核对象的使用计数。如果使用计数降为0,那么没有其他进程拥有该对象打开的句柄,当进程被撤消时,对象也被撤消。
2、创建子进程
创建子进程的必要性,为什么不用子线程呢
数据同步的问题,子线程会和同一个地址空间内的其他线程共享地址空间,出错时可能会破坏重要数据
使用子进程,如果要读写父进程的一些数据,可以通过ole,邮箱,内存映射等机制来
3 独立的子进程
创建子进程之后,在父进程中关闭掉 子进程的主进程和子线程对象句柄。
4 P r o c e s s I n f o 枚举系统中进程的工具。