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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Lexa777
0 / 0 / 0
Регистрация: 10.11.2011
Сообщений: 84
#1

Проекция файла! - C++

09.01.2014, 23:47. Просмотров 345. Ответов 2
Метки нет (Все метки)

Как доказать преподавателю: что я сделал для того что бы не было гонок программ???
Что та или иная программа не выполняется первой или не в свою очередь, что одна передала данные, вторая их приняла...

Помогите пожалуйста...спасибо заранее)


Написать две программы. Первая программа создает проекцию файла в памяти и выделяет для нее блок адресов размером 8 MB. Вторая программа подключается к уже существующей проекции, записывает в нее данные, и отключается от проекции. Первая программа читает данные из проекции, выводит их на печать, закрывает проекцию. Использовать функции CreateFileMapping, OpenFileMapping, MapViewOfFile, UnmapViewOfFile, CloseHandle. Должно быть убедительно продемонстрировано, что второй программе удалось записать данные в блок разделяемой памяти, и что первая программа получила эти данные.

master.c

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <stdio.h>
#include <process.h>
#include <windows.h>
 
int main(void)
{
  HANDLE      hMapFile, hFile, event;
  char        *map_data;
  int i;
 
  hFile = CreateFile("Mydata.dat", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ,
                     NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
 
  hMapFile = CreateFileMapping(hFile, NULL, PAGE_READWRITE, 0, 0,   "MapLab8");
  if (hMapFile != NULL && GetLastError() == ERROR_ALREADY_EXISTS) {
    printf("FileMapping handle %p exist!", hMapFile);
    CloseHandle(hMapFile);
    exit(1);
  }
  if(hMapFile == NULL) {
    printf("FileMapping handle not created!");
    exit(1);
  }
 
  event = CreateEvent(NULL, FALSE, FALSE, "MyEvent");
  if (event == NULL){
      printf("CreateEvent Failed!");
      exit(1);
  }
  WaitForSingleObject(event, INFINITE);
 
  map_data = (char *) MapViewOfFile(hMapFile, FILE_MAP_ALL_ACCESS, 0, 0, 8*1024*1024);
  if(map_data == NULL) {
    printf("Can't lock mapzone!");
    exit(1);
  }
  for (i = 0; i < 8*1024*1024; i++) printf("%c", map_data[i]);
  
  UnmapViewOfFile(map_data);
  CloseHandle(hMapFile);
  CloseHandle(hFile); CloseHandle(event);
  return 0;
}
slave.c
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <stdio.h>
#include <process.h>
#include <windows.h>
 
int main(void)
{
  HANDLE      hMap, event;
  char        *map_data;
  
  hMap = OpenFileMapping (FILE_MAP_ALL_ACCESS, FALSE, "MapLab8");
  if (hMap == NULL){
      printf ("Proection not exist!");
      exit(1);
  }
 
  event = OpenEvent(EVENT_ALL_ACCESS, FALSE, "MyEvent");
  if (event == NULL){
      printf("OpenEvent Failed!");
      exit(1);
  }
 
  map_data = (char*) MapViewOfFile(hMap, FILE_MAP_ALL_ACCESS, 0, 0, 8*1024*1024);
  if (map_data == NULL){
     printf("Can't lock mapzone!");
     exit(1);
  }
  strcpy (map_data, "Hie! It's me - slave.c\n");
  
  SetEvent(event);
  UnmapViewOfFile(map_data);
  CloseHandle(hMap); CloseHandle(event);
  return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.01.2014, 23:47     Проекция файла!
Посмотрите здесь:

C++ Связь заголовочного файла и файла с описанием класса.
C++ Добавить в конец первого файла содержимое второго файла
C++ С помощью очереди за один просмотр файла напечатать элементы файла в заданном порядке
C++ Пользователь вводит имя файла, программа выводит содержимое файла с указанием номеров строк.
C++ Проекция файла
Вывести на экран символы первого файла с позиций, указываемых числами из второго файла C++
Написать программу по разбивке и анализу содержимого файла отчета работы ПО (log-файла) C++
C++ Создать два файла, первый содержит элементы исходного файла с нечетными номерами, а второй с четными
Загрузка данных из файла с возможностью выбора файла C++
C++ Существует ли проекция точки?
C++ Как, прочитав из файла один символ, выявить факт окончания файла
Проекция точек на плоскость C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Убежденный
Системный программист
 Аватар для Убежденный
14658 / 6604 / 1046
Регистрация: 02.05.2013
Сообщений: 10,878
Завершенные тесты: 1
10.01.2014, 10:27     Проекция файла! #2
Цитата Сообщение от Lexa777 Посмотреть сообщение
Как доказать преподавателю: что я сделал для того что бы не было гонок программ???
Доказать можно тестами.

Цитата Сообщение от Lexa777 Посмотреть сообщение
Что та или иная программа не выполняется первой или не в свою очередь, что одна передала данные, вторая их приняла.
Навскидку: что произойдет, если запустить slave раньше, чем master ?
Lexa777
0 / 0 / 0
Регистрация: 10.11.2011
Сообщений: 84
10.01.2014, 11:01  [ТС]     Проекция файла! #3
Нужно теоретически объяснить!
Yandex
Объявления
10.01.2014, 11:01     Проекция файла!
Ответ Создать тему
Опции темы

Текущее время: 03:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru