文章目录
进程简介
所谓进程,就是一个包含了一定的资源的集合体。进程拥有独立的地址空间,可执行模块、DLL、代码段和数据段等。进程不执行任何任务,所有的事情都由线程来完成。当启动一个进程的时候,一个主线程也随之启动。
创建进程
创建进程的方法有2中,一种是直接运行一个程序,另外一种是调用CreateProcess函数。不管是哪种方法,他们做的事情都是一样的。首先,系统内核创建一个进程对象,并为该进程分配虚拟的内存空间,初始化堆栈,创建一个执行线程,将指定的程序加载到内存空间,然后初始化全局变量,通过C运行时启动函数调用我们的入口函数。在Windows下,不同的程序类型入口函数不一样。当创建一个win32程序的时候,它可能调用的是如下函数:
static int __cdecl invoke_main()
{
return WinMain(
reinterpret_cast<HINSTANCE>(&__ImageBase),
nullptr,
_get_narrow_winmain_command_line(),
__scrt_get_show_window_mode());
}
如果是控制台程序则调用: