博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
windows系统调用 利用事件对象实现进程通信
阅读量:7283 次
发布时间:2019-06-30

本文共 2110 字,大约阅读时间需要 7 分钟。

1 #include "iostream" 2 #include "windows.h" 3 #include "cstring" 4 using namespace std; 5  6 static LPCTSTR g_szContinueEvent="w2kdg.EventDemo.event.Continue"; 7  8 BOOL CreateChild(){ 9     TCHAR szFilename[MAX_PATH];10     GetModuleFileName(NULL,szFilename,MAX_PATH);11 12     TCHAR szCmdLine[MAX_PATH];13     sprintf_s(szCmdLine,"\"%s\" child",szFilename);14 15     STARTUPINFO si;16     ZeroMemory(reinterpret_cast
(&si),sizeof(si));17 si.cb=sizeof(si);18 19 PROCESS_INFORMATION pi;20 21 BOOL bCreateOK=CreateProcess(22 szFilename,23 szCmdLine,24 NULL,25 NULL,26 FALSE,27 0,28 NULL,29 NULL,30 &si,31 &pi32 33 );34 35 if(bCreateOK){36 CloseHandle(pi.hProcess);37 CloseHandle(pi.hThread);38 }39 40 return (bCreateOK);41 42 }43 44 void WaitForChild(){45 HANDLE hEventContinue=CreateEvent(46 NULL,47 TRUE,48 FALSE,49 g_szContinueEvent50 );51 52 if(hEventContinue!=NULL){53 printf("Event creates.\n");54 if(CreateChild()){55 printf("Child process created.\n");56 printf("Parent process waiting on child process.\n");57 WaitForSingleObject(hEventContinue,INFINITE);58 printf("Parent process received the event signaling from child process.\n");59 }60 61 CloseHandle(hEventContinue);62 }63 64 }65 66 void SignalParent(){67 HANDLE hEventContinue=OpenEvent(68 EVENT_MODIFY_STATE,69 FALSE,70 g_szContinueEvent71 );72 73 if(hEventContinue!=NULL){74 SetEvent(hEventContinue);75 printf("Child process begining...\n");76 }77 78 CloseHandle(hEventContinue);79 }80 81 int main(int argc,char *argv[]){82 if(argc>1&&strcmp(argv[1],"child")==0){83 SignalParent();84 }85 else{86 87 WaitForChild();88 printf("Parent process released.\n");89 }90 getchar();91 return 0;92 93 }

 

转载于:https://www.cnblogs.com/593213556wuyubao/p/3786414.html

你可能感兴趣的文章
Ubuntu下搭建sun-jdk和Maven2
查看>>
zabbix数据库备份
查看>>
Virtual PC 2007下虚拟机与本机双XP系统实现互联与上网详解
查看>>
css中display设置为table、table-row、table-cell后的作用及其注意点
查看>>
Linux学习笔记
查看>>
帝国CMS网站管理系统安装方法图文教程
查看>>
Domino 8.5 迁移步骤-看图说话
查看>>
Openssl及加密解密(二)openssl
查看>>
个性心理测试
查看>>
Redis集群及管理讲解
查看>>
ps命令详解
查看>>
配置系列:ssm中applicationContext.xml的简单配置
查看>>
nginx启动脚本
查看>>
linux 出现bash: ****: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory
查看>>
kickstart安装linux
查看>>
蓝色心情win7主题一键安装包 v 2.0
查看>>
MySQL5.7修改密码
查看>>
10个趣味Linux动画命令
查看>>
Linux协议栈(4)——sk_buff及代码
查看>>
DDOS防御
查看>>