windows系统调用 利用事件对象实现进程通信
#include "iostream"
#include "windows.h"
#include "cstring"
using namespace std; static LPCTSTR g_szContinueEvent="w2kdg.EventDemo.event.Continue"; BOOL CreateChild(){
TCHAR szFilename[MAX_PATH];
GetModuleFileName(NULL,szFilename,MAX_PATH); TCHAR szCmdLine[MAX_PATH];
sprintf_s(szCmdLine,"\"%s\" child",szFilename); STARTUPINFO si;
ZeroMemory(reinterpret_cast<void*>(&si),sizeof(si));
si.cb=sizeof(si); PROCESS_INFORMATION pi; BOOL bCreateOK=CreateProcess(
szFilename,
szCmdLine,
NULL,
NULL,
FALSE,
,
NULL,
NULL,
&si,
&pi ); if(bCreateOK){
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
} return (bCreateOK); } void WaitForChild(){
HANDLE hEventContinue=CreateEvent(
NULL,
TRUE,
FALSE,
g_szContinueEvent
); if(hEventContinue!=NULL){
printf("Event creates.\n");
if(CreateChild()){
printf("Child process created.\n");
printf("Parent process waiting on child process.\n");
WaitForSingleObject(hEventContinue,INFINITE);
printf("Parent process received the event signaling from child process.\n");
} CloseHandle(hEventContinue);
} } void SignalParent(){
HANDLE hEventContinue=OpenEvent(
EVENT_MODIFY_STATE,
FALSE,
g_szContinueEvent
); if(hEventContinue!=NULL){
SetEvent(hEventContinue);
printf("Child process begining...\n");
} CloseHandle(hEventContinue);
} int main(int argc,char *argv[]){
if(argc>&&strcmp(argv[],"child")==){
SignalParent();
}
else{ WaitForChild();
printf("Parent process released.\n");
}
getchar();
return ; }
windows系统调用 利用事件对象实现进程通信的更多相关文章
- Windows多线程同步系列之三-----事件对象
事件是一个内核事件,内核事件是什么呢,我理解也不深入也不好说,暂且理解为一个内核维护的数据类型吧通过内核事件同步主要 的方法是对事件的信号有和无来进行同步. 比如当我们一个线程进入一段临界代码(独占代 ...
- Windows进程通信-共享内存空间
三个模块 1,game.exe,三个方法,控制台输入指令('A','B','R')分别控制三个方法的调用: 2,WGDll.dll,要注入到game进程中的dll文件: 3,myconsole.exe ...
- Windows中利用共享内存来实现不同进程间的通信
Windows中利用共享内存来实现不同进程间的通信 一.msdn详细介绍 https://docs.microsoft.com/zh-cn/windows/win32/memory/sharing-f ...
- Windows线程+进程通信
一 Windows线程进程 1)定义 按照MS的定义, Windows中的进程简单地说就是一个内存中的可执行程序, 提供程序运行的各种资源. 进程拥有虚拟的地址空间, 可执行代码, 数据, 对象句柄集 ...
- Windows进程通信 -- 共享内存(1)
共享内存的方式原理就是将一份物理内存映射到不同进程各自的虚拟地址空间上,这样每个进程都可以读取同一份数据,从而实现进程通信.因为是通过内存操作实现通信,因此是一种最高效的数据交换方法. 共享内存在 W ...
- python 守护进程、同步锁、信号量、事件、进程通信Queue
一.守护进程 1.主进程创建守护进程 其一:守护进程会在主进程代码执行结束后就终止 其二:守护进程内无法再开启子进程,否则抛出异常:AssertionError: daemonic processes ...
- 几种Windows进程通信
32位Windows采用虚拟内存技术使每个进程虚拟4G内存,在逻辑上实现了对进程之间数据代码的分离与保护.那么相应的进程之间的通信也就有必要整理掌握一下. Windows进程间通讯的方法有很多:管道. ...
- Windows进程通信 -- 共享内存
享内存的方式原理就是将一份物理内存映射到不同进程各自的虚拟地址空间上,这样每个进程都可以读取同一份数据,从而实现进程通信.因为是通过内存操作实现通信,因此是一种最高效的数据交换方法. 共享内存在 Wi ...
- unity3d进程通信利用WM_COPYDATE和HOOK
hello,近期用unity做了进程通信,应该是和c++的PC端实现通信,才開始一头雾水,后来实现了才知道好繁杂......先感谢对我提供帮助的百度,谷歌以及游戏圈的大大们. 在进程通信中非常多方法, ...
随机推荐
- PHP面向对象学习五 类中接口的应用
类中接口的应用 接口:一种成员属性全部为抽象的特殊抽象类,在程序中同为规范的作用 抽象类:1.类中至少有一个抽象方法.2.方法前需要加abstract 接口: 1.类中全部为抽象方法,抽象方法前不 ...
- mysql 主从同步原理
Replication 线程 Mysql的 Replication 是一个异步的复制过程,从一个 Mysql instace(我们称之为 Master)复制到另一个 Mysql instance(我们 ...
- Java面试题大全(二)
41.是否可以继承String类? String类是final类故不可以继承. 42.swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上? switch(expr1 ...
- 2016HUAS暑假集训训练2 D - 敌兵布阵
Description Lily 特别喜欢养花,但是由于她的花特别多,所以照料这些花就变得不太容易.她把她的花依次排成一行,每盆花都有一个美观值.如果Lily把某盆花照料的好的话,这盆花的美观值就会上 ...
- php全面获取url地址栏及各种参数
<?php echo $_SERVER['HTTP_HOST']."<br>";//获取域名或主机地址 echo $_SERVER["SERVER_PO ...
- 20145337《JAVA程序设计》第一周学习总结
# 20145337 <Java程序设计>第1周学习总结 ## 教材学习内容总结 第一章 -Java最早是Sun公司撰写Star7应用程序的程序语言 -根据应用领域不同,有Java SE. ...
- 第一课JAVA开发环境配置
进行JAVA环境安装首先得进行jdk1.7部署,注意应放在没有中文和空格的目录下,然后进行配置环境变量,配置环境变量分为三步: 1.打开我的电脑--属性--高级--环境变量 2.新建系统变量JAVA_ ...
- viewPager的基本使用
viewPager是android扩展包v4中的类,这个类可以使用户左右切换当前的view. 特性: 1.viewPager直接继承了viewGroup类,所以它是一个容器类,可以在其中添加其它的vi ...
- IOS第15天(1,事件处理View的拖拽)
*******view 一些方法 #import "HMView.h" @implementation HMView // 一个完整的触摸过程 // touchesBegan -& ...
- 投行风云:FO的酸甜苦辣【转】
全世界收入最高的工作大概就是投行的FO前台部门 (Front Office)部门了.但在拿高薪的同时,也伴随着很多人难以想象的苦逼生活.作为投行最低层的分析师(Analyst),通常需要从早上10点工 ...