VC学习笔记之二进程通信.doc

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
VC学习笔记之二进程通信

VC学习笔记之二:进程通信 2 进程通信 内部进程间通讯和数据交换有消息、共享内存、命名(匿名)管道、邮槽、Windows套接字等多种技术。我们在今后的课程中将一一介绍。 为了不让其他进程和线程打扰,必需要设置最高的优先级,以下函数设置当前进程和线程到最高的优先级。 SetPriorityClass(GetCurrentProcess(), REALTIME_PRIORITY_CLASS); SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_TIME_CRITICAL); 2.1 创建进程 为了创建进程,需要定义安全属性并且接受一个句柄,可以用此句柄管理进程,比如:改变进程的优先级或者种植进程。甚至在进程停止运行之后,只要有仍然打开的句柄,进程会继续存在。为了销毁进程,需要关闭进程的所有句柄。 CreateProcess需要按如下形式调用: BOOL CreateProcess{ LPCTSTR lpszImageName, LPCTSTR lpszCmdLine, LPSECURITY_ATTRIBUTES lpsaProcess, LPSECURITY_ATTRIBUTES lpsaThread, BOOL bInheritHandles, DWORD fdwCreate, LPVOID lpvEnvironment, LPTSTR lpszCurrentDir, LPSTARTUPINFO lpStartupInfo, LPPROCESS_INFORMATION lpProcInfo} 参数说明: lpszImageName:此参数必须指向可执行文件名(比如,子进程)的字符串,而且不能包含任何命令行参数。在定位此参数命名文件时,系统不搜索PATH环境变量定义的目录。因此程序必须放在当前目录下,或者该字符串必须包含整个路径名。 lpszCmdLine:如果不必传递命令行参数,此参数可以取NULL。如果有命令行参数的话,在lpszCmdLine字符串的第一项必须是C程序员所谓的argv[0]的值。 第一项,即程序名是经典的,但并非是必须的,即使读者已经在lpszImageName中提供此名字。如果此名字出现在lpszImageName中,可以忽略路径和扩展名,但是在第一个命令行参数前必须有一项。 为了使CreateProcess函数沿PATH环境变量定义的路径搜索执行文件,可以使第一个参数为空,而在第二个参数中传递完整的命令行。下表列出了CreateProcess参数使用的例子。 第一个参数第二个参数结果d:\dev\bin\qgrepNULL仅当在\dev\bin目录下找到qgrep时才运行此程序,没有命令行参数qgrep.exeqgrep –L-Y “ERROR_” *.h仅当在当前目录中找到qgrep时才以给定的命令行参数运行此程序NULLqgrep ??L-Y “ERROR_” *.h如果在PATH环境变量所指定的目录中能 找到qgrep,就以给定的命令行参数运行此程序 lpsaProcess和lpsaThread:这两个参数提供对新进程及其主线程的安全属性。在默认情况下,其他进程接受新对象的完全访问全县,但子进程并不继承此句柄。 bInheritHandles:此参数也为阻止子进程继承其他已经创建的句柄提供了机会。如果bInheritHandles参数为FALSE,新进程不继承任何句柄,即使这些进程在创建时标记为可继承的。阻止继承很有用,因为很多对象包括线程和进程直到其所有句柄都关闭后才会从内存中删除。如果每以子进程继承其父进程的所有句柄,很多对象都会一直占据内存直到所有子进程都退出并且其句柄都被销毁。 fdwCreate:此参数可支配新进程的类系和优先级。新进程在创建之初可能被挂起,可能有一控制台窗口或者GUI窗口,可能从其子进程中接收调试信息,也可能接收特定的优先级类。以下是一些可以联合使用的创建标志量: DEBUG_PROCESS:父进程接受有关任何子进程的调试信息 DEBUG_ONLY_THIS_PROCESS:父进程接受有关子进程但只能是此子进程的调试信息。 CREATE_SUSPENDED:新进程的主线程在创建之初就被挂起。 DETACHED_PROCESS:新进程不使用控制台窗口。 CREATE_NEW_CONSOLE:新进程创建自己的控制台窗口。 IDLE_RPIORITY_CLASS:仅当系统空闲时才运行进程。 NORMAL_PRIORITY_CLASS:进程无特殊的调度要求。 HIGH_PRIORITY_CLASS:进程比低优先级的所以线程优越,这样该进程对重要的情况响应迅速。 REALTIM

文档评论(0)

2017ll + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档