进程通过命名共享内存进行通信

时间:2014-03-18 09:52:30

标签: c++ winapi process

我制作了2个通过映射文件进行通信的Visual Studio项目。但我必须单独启动它们:首先启动A,运行它(它将创建映射文件并用信息填充它)。然后我必须启动B,它将读取文件并打印其中的任何内容。当然,关闭A和运行B将不起作用(B将找不到映射文件,因为只有在A运行时它才在内存中。)

我的问题是:有没有办法通过A启动项目B,而不需要手动运行项目B?

1 个答案:

答案 0 :(得分:0)

不是手动启动A而是B启动,您应该只手动启动程序A并让程序A使用CreateProcess函数启动程序B:

STARTUPINFO startupinfo ;
startupinfo.cb = sizeof (startupinfo) ;
PROCESS_INFORMATION pinfo ;
memset(&startupinfo, 0, sizeof (startupinfo)) ;
bool success = CreateProcess("b.exe", NULL, NULL, NULL, false, NORMAL_PRIORITY_CLASS,
                             NULL, NULL, &startupinfo, &pinfo) ;