进程
4.1.0
进程是一个正在运行的程序的实例,有两部分组成
1 操作系统用来管理进程的内核对象,存放进程的统计信息
2 地址空间,包含进程可执行模块的代码和数据,和动态分配的内存空间
4.1.3 进程的命令行
当创建一个新进程时,要传递一个命令行,创建进程可执行文件的名字是命令行的第一个标记。在winmain中其余部分传递给pszCmdLine
int main(int argc, char* argv[])中 argv[0] 为应用程序,argv[1]为传递给应用程序的参数
获取完整命令行的指针
4.1.9 系统版本
终止进程的运行
1 主线程的进入点函数返回
2 进程中的一个线程调用exitprocess
3 另一个进程中的线程调用TermianteProcess函数
创建一个新进程
BOOL CreateProcess
(
LPCTSTRlpApplicationName,
LPTSTRlpCommandLine,
LPSECURITY_ATTRIBUTESlpProcessAttributes。
LPSECURITY_ATTRIBUTESlpThreadAttributes,
BOOLbInheritHandles,
DWORDdwCreationFlags,
LPVOIDlpEnvironment,
LPCTSTRlpCurrentDirectory,
LPSTARTUPINFOlpStartupInfo,
LPPROCESS_INFORMATIONlpProcessInformation
);[1]
4.1.0
进程是一个正在运行的程序的实例,有两部分组成
1 操作系统用来管理进程的内核对象,存放进程的统计信息
2 地址空间,包含进程可执行模块的代码和数据,和动态分配的内存空间
创建一个进程后系统会自动创建一个线程 成为主线程
window应用程序的进入点函数:
1 int WINAPI WinMain()
2 int WINAPI wWinMain()
3 int main()
4 int wmain()
他们的区别为
程序的运行期的启动函数功能为:
1检索指向新进程的完整命令行的指针
2 检索指向新进程的环境变量的指针
3 对c/c++运行期的全局变量进行初始化
4 对c运行期内存单元分配函数的内存栈进行初始化
5对所有全局和静态c++类对象调用构造函数
4.1.1 进程的实例句柄
HMODULE GetModleHandle(PCTSTR pszModule)
若pszModule 传递NULL ,则该函数返回可执行文件的基地址
4.1.2
// 131.cpp : Defines the entry point for the application.
//
#include "stdafx.h"
int APIENTRY WinMain(HINSTANCE hInstance,//进程的当前实例句柄
HINSTANCE hPrevInstance,//进程的先前的实例句柄
LPSTR lpCmdLine,//命令行参数
int nCmdShow)//窗口显示方法
{
// TODO: Place code here.
return 0;
}
4.1.3 进程的命令行
当创建一个新进程时,要传递一个命令行,创建进程可执行文件的名字是命令行的第一个标记。在winmain中其余部分传递给pszCmdLine
int main(int argc, char* argv[])中 argv[0] 为应用程序,argv[1]为传递给应用程序的参数
获取完整命令行的指针
PTSTR GetCommandLine() 该函数返回指向完整命令行缓存的指针
4.1.4 进程的环境变量
#include <iostream>
#include <windows.h>
using namespace std;
int main()
{
TCHAR szCurDir[MAX_PATH];
//GetFullPathName(TEXT("C:\\test.txt"),MAX_PATH,szCurDir,NULL);
GetCurrentDirectory(MAX_PATH,szCurDir);//获取当前工程目录
cout<<szCurDir<<endl;
return 0;
}#include <iostream>
#include <fstream>
#include <windows.h>
using namespace std;
int main()
{
TCHAR szCurDir[MAX_PATH] = {"C:"};
//GetFullPathName(TEXT("C:\\test.txt"),MAX_PATH,szCurDir,NULL);
//GetCurrentDirectory(MAX_PATH,szCurDir);//获取当前工程目录
SetCurrentDirectory(szCurDir);
//ofstream of1s(TEXT("\\123.txt"),ios_base::out);
ofstream of1(TEXT("\\123.TXT"),ios_base::out);
TCHAR szCurDir1[MAX_PATH];
GetCurrentDirectory(MAX_PATH,szCurDir1);
cout<<szCurDir1<<endl;
return 0;
}4.1.9 系统版本
BOOL GetVersionEx()获取系统的版本
bool VerisyVersionInfo()主机系统的版本与应用程序需要的版本比较
终止进程的运行
1 主线程的进入点函数返回
2 进程中的一个线程调用exitprocess
3 另一个进程中的线程调用TermianteProcess函数
创建一个新进程
BOOL CreateProcess
(
LPCTSTRlpApplicationName,
LPTSTRlpCommandLine,
LPSECURITY_ATTRIBUTESlpProcessAttributes。
LPSECURITY_ATTRIBUTESlpThreadAttributes,
BOOLbInheritHandles,
DWORDdwCreationFlags,
LPVOIDlpEnvironment,
LPCTSTRlpCurrentDirectory,
LPSTARTUPINFOlpStartupInfo,
LPPROCESS_INFORMATIONlpProcessInformation
);[1]
本文深入探讨了进程的概念,包括其组成部分、Windows应用程序的启动过程、如何获取完整命令行和环境变量,以及如何终止进程运行。同时介绍了创建新进程的方法,并详细说明了不同启动函数的区别。
476

被折叠的 条评论
为什么被折叠?



