Нужно организовать общение между двумя программами.
Управляющее приложение:
#include <conio.h>
#include <iostream>
#include <Windows.h>
using namespace std;
int main(int argc, char* argv[])
{
HANDLE fileHandle = CreateFile(
L"IPC.txt",
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_WRITE | FILE_SHARE_READ,
NULL,
OPEN_ALWAYS,
NULL,
NULL
);
if (!fileHandle) { cout << "Create file failed\n"; return 1; }
HANDLE fileMappingHandle = CreateFileMapping(
fileHandle,
NULL,
PAGE_READWRITE,
NULL,
NULL,
L"MyMappingFile"
);
if (!fileMappingHandle) { cout << "Create file mapping failed\n"; return 1; }
LPVOID mapViewOfFileAddr = MapViewOfFile(
fileMappingHandle,
FILE_MAP_ALL_ACCESS,
NULL,
NULL,
65536
);
if (!mapViewOfFileAddr) { cout << "Map view failed\n"; return 1; }
cout << "Share success\n";
_getch();
UnmapViewOfFile(mapViewOfFileAddr);
CloseHandle(fileHandle);
CloseHandle(fileMappingHandle);
return 0;
}
И приложение которое должно читать и иногда записывать
#include <iostream>
#include <Windows.h>
using namespace std;
int main(int argc, char* argv[])
{
HANDLE openFileMapping = OpenFileMapping(
GENERIC_READ | GENERIC_WRITE,
FALSE,
L"MyMappingFile"
);
if (!openFileMapping) { cout << "Open file mapping failed\n"; return 1; }
LPVOID mapViewOfFileAddr = MapViewOfFile(
openFileMapping,
FILE_MAP_ALL_ACCESS,
NULL,
NULL,
65536
);
if (!mapViewOfFileAddr) { cout << "Map view of file failed\n"; return 1; }
cout << "Reading\n";
CloseHandle(openFileMapping);
return 0;
}
Вроде бы всё готово и работает.
Как теперь читать/записывать данные?
В первом приложении нужно работать, как я понял, просто с файлом.
А что делать во втором приложении для чтения/записи данных?