Windows进程销毁有基本的四种模式,入口函数返回,ExitProcess(),TermitateProcess(),所有线程死亡
这四种操作 只有入口函数返回是靠谱的正规操作,ExitProcess(),TermitateProcess()是危险操作,尽量避免,所有线程死亡的操作只存在于理论上。。。。。
接下来逐个简述这四种操作。
入口函数返回->程序执行完后自动退出,程序退出的时候会做以下的事:
1.将栈上面的数据全部清除。
2.将堆上面的数据全部清除。
3.设置退出代码。(将退出代码设置为入口函数的返回值)
4.内核对象的计数减一。
ExitProcess(UINT uExitCode):
这个函数可以中断进程操作,立即切断线程,让进程退出(进程中没有线程的时候就没有存在的意义,就退出了)。进程推出的时候这个函数会将他的接受到的参数设置为退出代码。但是,不会将内核对象的数量递减。关于内核对象不消亡所产生的影响后面来说。
ExitProcess(HANDLE hProcess,DWORD uExitCode)
这个函数的作用和楼上的函数差不多,但是它多了个HANDLE参数,这个HANDLE参数可以接收一个句柄,可以销毁特定的进程。
线程全部自然死亡:
<