Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <windows.h>
- #include <iostream>
- #include <cstdlib>
- #include <ctime>
- #include <string>
- using namespace std;
- const int N = 30;
- char str[N] = " abc"; char s[N + 1];
- int M = N;
- void left()
- {
- for (int i = 0; i < M; i++)
- cout << str[i];
- cout << endl;
- for (int i = 0, j = 0; i < M && j<M - 1; j++, i++)
- s[j] = str[i + 1];
- for (int i = 0; i < M; i++)
- str[i] = s[i];
- M = M - 1;
- }
- void main(int argc, char* argv[])
- {
- SetConsoleOutputCP(1251);
- srand(time(NULL));
- HANDLE hS = CreateSemaphore(NULL, 1, 4, NULL);
- //Больщая часть параметров не важны для pipe
- HANDLE pipe = CreateFile(
- L"\\\\.\\pipe\\laba",
- GENERIC_READ, //нужно только чтение
- FILE_SHARE_READ | FILE_SHARE_WRITE,
- NULL,
- OPEN_EXISTING,
- FILE_ATTRIBUTE_NORMAL,
- NULL
- );
- int action;
- DWORD numBytesRead;
- for (;;)
- {
- if (WaitForSingleObject(hS, 0) == WAIT_OBJECT_0)
- {
- numBytesRead = 0;
- BOOL result = ReadFile(
- pipe,
- &action, //данные из pipe будут записаны сюда
- sizeof(int), //кол-во выделенных буффером байт
- &numBytesRead, //действительное кол-во байт для хранения
- NULL //не использовать overlapped I/O
- );
- left();
- Sleep(rand() % 500 + 200);
- // выходим из обработки
- ReleaseSemaphore(hS, 1, NULL);
- }
- }
- CloseHandle(pipe);
- CloseHandle(hS);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement