实验二:Windows 进程控制 1. 实验目的 每个进程都有一个独立的受到保护的地址空间,其他进程不能访问。一个进程可以包含一个或更多的线程。进程能够在其内部创建新的、独立的线程,并且管理对象间的通信和同步。 通过对 Windows 系统编程,进一步熟悉操作系统的基本概念,较好地理解 Windows 操作系统的系统结构和编程特点。 2. 进程控制 Windows 所创建的每个进程都从调用 CreateProcess() API 函数开始,该函数的任务是在对象管理器子系统内初始化进程对象。每一进程都以调用 ExitProcess()或TerminateProcess() API 函数终止。通常应用程序的框架负责调用 ExitProcess()函数。对 C++运行库来说,这一调用发生在应用程序的main()函数返回之后,如果采用 C 运行库,则调用 WinMain()函数。 通过创建进程、观察正在运行的进程和终止进程的程序设计和调试操作,进一步熟悉操作系统的进程概念,理解 Windows 进程的生命周期。 2.1 进程控制相关的API 基本的Win32 进程管理函数是 CreateProcess,它可以创建拥有单个线程的进程。因为进程需要代码,所以有必要指定可执行程序文件名作为 CreateProcess 调用的一部分。 CreateProcess 有10 个参数支持其灵活性和强大功能。该函数并不返回一个HANDLE,而是在一个结构(在调用中指定)中返回表示进程和线程的两个句柄。 2.1.1 创建进程CreateProcess()函数 函数格式: BOOL CreateProcess(LPCTSTR lpApplicationName, LPTSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCTSTR lpCurrentDirectory, LPSTRATUPINFO lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation); 参数: (1)lpszApplicationName 和 lpCommandLine 指定了新进程将使用的可执行文件和传递给新进程的命令行字符串。 lpszCommandLine 可以设定 CreateProcess 中用于创建新进程的命令行。CreateProcess 在解析lpszCommandLine 字符串的时候,它先查看字符串中的第一个符号。如果它是一个可执行文件名且不含有扩展名,就假定它的扩展名为 EXE。CreateProcess 将按照以下顺序来搜索可执行文件: 1)含有调用进程的EXE 文件的目录; 2)调用进程的当前目录; 3)Windows 系统目录,该目录由 GetSystemDirect...