上大学那会,知道进程是分配资源的最小单位,而线程是处理机分配的最小单位(执行最小单位)。很多时候创建进程是一种极大的浪费,但是有时候创建进程是必要的。一种很常见的情况,在程序运行时,需要运行一个其他的exe程序,这时候可以创建进程,Windows中使用CreateProcess创建一个进程….
目录:
扒一下CreateProcess
Windows下,这个创建进程API,参数还是蛮多的。
CreateProcess(
_In_opt_ LPCSTR lpApplicationName, //demo.exe
_Inout_opt_ LPSTR lpCommandLine, //param1 param2
_In_opt_ LPSECURITY_ATTRIBUTES lpProcessAttributes,//NULL,不继承进程句柄
_In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes, //NULL,不继承线程句柄
_In_ BOOL bInheritHandles, //FALSE,不继承句柄
_In_ DWORD dwCreationFlags, //0,无标识[0,CREATE_NEW_CONSOLE,DEBUG_PROCESS]
_In_opt_ LPVOID lpEnvironment, //NULL,使用父环境变量
_In_opt_ LPCSTR lpCurrentDirectory, //NULL,使用父进程路径作为当前目录
_In_ LPSTARTUPINFOA lpStartupInfo, //NULL,无启动信息
_Out_ LPPROCESS_INFORMATION lpProcessInformation //[out]保存了进程信息
);
上面这个是从VS2013中拷贝出来的,后面的注释是参考了《精通Windows API——函数、接口、编程实例》一书。
需要吐槽一下,
- CREATE_NEW_CONSOLE ,这个命令会弹出一个新DOS界面,运行新进程。如果直接传入0,那么就在同一个DOS界面跑父子进程了。
- CreateProc