PoEdu培训 Windows班 第十六课 Windows进程及线程(三)
文章类别: 培训笔记 0 评论

PoEdu培训 Windows班 第十六课 Windows进程及线程(三)

文章类别: 培训笔记 0 评论

Windows 进程及线程(三)

CreateProcess补充

如果lpApplicationName为NULL, 并且lpCommandLine只传递了一个没有.exe的字符串
它会自动加上 .exe 后缀

需要尤其注意STARTUPINFO结构体中, 各个参数的说明

终止进程

入口函数返回(main/WinMain函数)

这是最正确的方式, 只有这样才能保证主线程的所以资源都已经被正确的清理.

入口函数返回时, 会确保以下几件事请已经完成:

进程中的一个线程调用ExitProcess

不应该调用此函数来结束进程
当函数呗调用的时候, 会强制结束进程
并将退出码设置为 uExitCode
但是此时线程并未正确结束, 会导致线程无法正确被清理.

VOID ExitProcess(UINT uExitCode);

另一个进程中的线程调用TerminateProcess

不应该用此函数来结束进程
此函数能够结束其他进程

BOOL TerminateProcess(
  HANDLE hProcess,
  DWORD uExitCode
);

进程中的所以线程都自然死亡

理论存在, 但是很少碰到这种情况.

使用计数

当我们使用CreateProcess启动一个新进程的时候

未完待续...

如有错误,请提出指正!谢谢.

回复