|CreateProcess不会等待进程启动

众所周知 , 我们可以调用CreatProcess这个API来创建一个进程 。 这里我使用到了”创建” , 而不是”启动” , 也就是说 , CreatProcess只是创建一个进程 , 而不是启动它 。
CreateProcess在返回的之前 , 不会等待进程启动是否完成 。 它只是简单地创建一个进程对象 , 然后剩下的工作就不再由它负责了 。
那么 , 是由谁来进行初始化这个进程呢?
你答对了 , 在Win32进程模型下 , 是进程在它的上下文中初始化它自己 。
当一个进程被创建之初 , 它的内部结构几乎是空的 , 只保留有一些必要的信息用于进程的启动阶段 。 当进程中的线程被赋予CPU时间片之后 , 它就开始了真正的工作 , 例如加载DLL , 按照正确的顺序对DLL进行初始化 , 然后调用应用程序的入口点(Program’s entry point) 。
如果在进程的启动过程中 , 有某一个步骤出现了问题 , 则整个进程将会被终止 , 然后操作会设置一个错误代码来指示进程启动失败的原因 。 例如 , 如果进程启动阶段找不到一个必须的DLL , 则错误代码就会是:
STATUS_ENTRYPOINT_NOT_FOUND 。
但是 , 另外一个情况也需要注意 , 就是你可以通过SetErrorMode来禁止错误对话框的出现 。
总结进程的概念对于操作系统来说 , 是一项伟大的发明 。 要始终记得 , 进程本身不会执行任何代码 , 它只是提供一个空间来存储一些必要的信息 , 而真正执行代码的是:线程 。
最后Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一 , 里面有很多关于Windows的小知识 , 对于广大Windows平台开发者来说 , 确实十分有帮助 。
本文来自:《CreateProcess does not wait for the process to start》
【|CreateProcess不会等待进程启动】
- iPhone|6月份手机销量排行榜前5名,涵盖各个价位,跟着大家买肯定不会错
- 频繁装系统对电脑的伤害很大,电脑店不会告诉你这些
- 三星GalaxyS系列旗舰手机的影像系统一直处于领先地位|三星isocellhp3或不会搭载最新cmos
- 三星|玩游戏暴爽!三星55寸曲面电竞显示器要来了 售价不会便宜
- 物联网|零基础小白如何学会JAVA,掌握这五个技巧,不愁学不会!
- 微信|才发现:微信隐藏的六个使用功能!不会用太可惜,好多人不知道
- 5G|放号时间定档!正式商用的广电192号卡会不会“热卖”?
- 交易|热搜第一!蜜雪冰城的“黑化营销”你学不会
- 单反|超个频谁不会啊?天玑9000+正式发布,死磕骁龙8+!
- 百度地图|怎么区分好手机和差手机?关键就看这三点,看懂不会再被忽悠!
