// ctestshared.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <iostream>
#include<Windows.h>
typedef struct _Shared {
double CurentTime;//当前时间
double Duration;//总时长
int IsPause;
int IsMute;
int Heartbeat;//心跳
int Flag;
int Length;
char Info[1024];
}Shared;
int main(int argc, char** argv)
{
if (argc < 2)
return -1;
printf("子进程启动\n");
//创建父进程的互斥锁
auto mtx = CreateMutexA(NULL, FALSE, argv[1]);
//打开共享内存
HANDLE hfile = OpenFileMappingA(FILE_MAP_ALL_ACCESS, FALSE, "testshared");
if (NULL == hfile)
{
MessageBoxA(0, "不能打开共享内存", "提示", MB_OK);
return -1;
}
//映射地址
Shared* shared;
shared = (Shared*)MapViewOfFile(hfile, FILE_MAP_ALL_ACCESS, 0, 0, sizeof(Shared));
//进入互斥锁并读取数据
WaitForSingleObject(mtx, INFINITE);
printf("子进程接收:%s\n", shared->Info);
ReleaseMutex(mtx);
while (1)
{
Sleep(30);
//进入互斥锁并读取数据
WaitForSingleObject(mtx, INFINITE);
if (strcmp(shared->Info, "exit")==0)
{
printf("子进程接收:%s\n", shared->Info);
ReleaseMutex(mtx);
break;
}
ReleaseMutex(mtx);
}
//销毁资源
CloseHandle(hfile);
CloseHandle(mtx);
printf("子进程退出\n");
return 0;
}
// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单
// 调试程序: F5 或调试 >“开始调试”菜单
// 入门使用技巧:
// 1. 使用解决方案资源管理器窗口添加/管理文件
// 2. 使用团队资源管理器窗口连接到源代码管理
// 3. 使用输出窗口查看生成输出和其他消息
// 4. 使用错误列表窗口查看错误
// 5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目
// 6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件
- 1
- 2
- 3
- 4
前往页