Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <windows.h>
- #include <conio.h>
- #include <ctime>
- using namespace std;
- HANDLE hM;
- int main()
- {
- srand(time(NULL));
- int a[] = { rand() % 10, rand() % 10, rand() % 10, rand() % 10, rand() % 10, rand() % 10, rand() % 10, rand() % 10, rand() % 10, rand() % 10 };
- hM = CreateMutex(NULL, FALSE, L"name");
- //Ждем свободного ConectNamedPipe на сервере
- WaitNamedPipe(L"\\\\.\\pipe\\laba", INFINITE);
- //Большая часть параметров не важны для pipe
- HANDLE pipe = CreateFile(
- L"\\\\.\\pipe\\laba",
- GENERIC_READ, //нужно только чтение
- FILE_SHARE_READ | FILE_SHARE_WRITE,
- NULL,
- OPEN_EXISTING,
- FILE_ATTRIBUTE_NORMAL,
- NULL
- );
- //Изначально в разблокированном состоянии
- int fl = 2;
- DWORD numBytesRead = 0;
- do
- {
- if (PeekNamedPipe(pipe, NULL, 0, NULL, &numBytesRead, NULL) && numBytesRead > 0)
- {
- ReadFile(
- pipe,
- &fl, //данные из pipe будут записаны сюда
- sizeof(int), //кол-во выделенных буффером байт
- &numBytesRead, //действительное кол-во байт для хранения
- NULL //не использовать overlapped I/O
- );
- }
- if (fl == 2 && WaitForSingleObject(hM, 0) == WAIT_OBJECT_0) {
- //WaitForSingleObject(hM, INFINITE);
- //system("cls");
- a[rand() % 10] = rand() % 10;
- for (int i = 0; i<10; i++)
- cout << a[i];
- cout << endl;
- ReleaseMutex(hM);
- Sleep(1000);
- }
- } while (fl != 0);
- CloseHandle(pipe);
- CloseHandle(hM);
- return (0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement