Форум программистов, компьютерный форум CyberForum.ru

Обмен данными между процессами с помощью файлов, которые отображаются в память - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Найти максимальный элемент и его номер среди отрицательных элементов. http://www.cyberforum.ru/cpp-beginners/thread390333.html
собственно вот задание. я вот что-то не могу понять как его сделать, если возможно - расскажите, как найти или напишите.
C++ Упорядочить файл, содержащий записи из двух полей (числового и текстового), в порядке возрастания числа Здраствуйте, ребят подскажите, пожалуйста, как примерно написать такие программы, хотя бы идею подскажите, что использовать: 1)Напишите программу, которая бы упорядочивала файл, содержащий записи, состоящие из двух полей - числового и текстового, в порядке возрастания числового поля. 2)Напишите программу, которая дописывает в файл действительные числа из входного файла. http://www.cyberforum.ru/cpp-beginners/thread390325.html
C++ Робота з файлами
Задан файл целых чисел F. Используя вспомогательный файл Н, переписать компоненты файла F в файл G так, чтобы сначала были записаны все положительные числа, а затем - все отрицательные. Только на С
Проверка соответствия типу int C++
Привет всем Вот кусок кода int kolvoChel=0; int m=0; int w=0; int k=0; cout << "Vvedite kol-vo mugchin v semie: ";
C++ пройти тест http://www.cyberforum.ru/cpp-beginners/thread390305.html
1) Результат фрагмента программы for (int i=1; i<=3; i++) { cout <<”i”; } Выберите один ответ. фрагмент кода содержит ошибку
C++ Алгоритм равных цен! Помогите написать программу по этому алгоритму. Вот матрица 01001000 10101110 01010010 00100011 11000100 01001010 01110101 00010010 подробнее

Показать сообщение отдельно
sergeyotro
 Аватар для sergeyotro
0 / 0 / 0
Регистрация: 08.10.2011
Сообщений: 13
23.11.2011, 22:35     Обмен данными между процессами с помощью файлов, которые отображаются в память
Классическая задача "читатели-писатели", обмен информацией должен проходить с помощью файлов, отображаемых в память. Задание уже готово, но имеет один неприятный баг - при дебагинге видно, что при вводе длинных строк программа вешается, из-за того, что первый байт файла в памяти, почему-то, устанавливается в нуль. Собственно, прошу объяснений и помощи, форумчане.

Ниже фрагменты программы, в которых идёт конкретно работа с файлом. Эта ошибка происходит где-то тут.

Код писателя:
C++
1
2
3
4
5
6
7
8
hMFile = CreateFileMapping ( (HANDLE) 0xFFFFFFFF, NULL, PAGE_READWRITE, 0, 99, Fn1);
StartMFile = MapViewOfFile ( hMFile, FILE_MAP_WRITE, 0, 0, 99);
char * Buf = new char[99];
do {
    cin.getline(Buf, 99);
    CopyMemory(StartMFile, Buf, 99); //Вот тут в StartMFile первый байт всё ещё установлен
    PulseEvent(hEvent1);
} while ( CompareString(LOCALE_SYSTEM_DEFAULT, NORM_IGNORECASE, Buf, -1, "=exit", -1) != CSTR_EQUAL );
Код читателя:
C++
1
2
3
4
5
6
7
8
hMFile = OpenFileMapping(FILE_MAP_READ, TRUE, Fn1);
StartMFile = MapViewOfFile(hMFile, FILE_MAP_READ, 0, 0, 99);
char * Buf = new char[99];
do {
    WaitForSingleObject(hEvent1, INFINITE);
    CopyMemory(Buf, StartMFile, 99); // А уже тут первый байт StartMFilе равен нулю
    cout << Name << ": we have this stuff: " << Buf << endl;
} while( CompareString(LOCALE_SYSTEM_DEFAULT, NORM_IGNORECASE, Buf, -1, "=exit", -1) != CSTR_EQUAL );
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 04:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru