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

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

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

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

09.01.2014, 23:47. Просмотров 364. Ответов 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++
Здравствуйте! Написать две программы. Первая программа создает проекцию файла в памяти и выделяет для нее блок адресов размером 8 MB....

Существует ли проекция точки? - C++
Даны абсцисса и аппликата точки и значения типа величин a, b, c и d из уравнения плоскости a*x+b*y+c*z=d. Всё дано числами типа double....

Проекция точек на плоскость - C++
Привет форумчане! Есть 3D плоскость, заданна тремя точками: QVector3D p1 = QVector3D(12.0, 0.0, 12.0); QVector3D p2 =...

Сформировать два текстовых файла из целых чисел. Записать в третий файл минимальный элемент первого файла и максимальный элемент второго файла - C++
Тема: работа с текстовыми файлами с использованием стандартных функций библиотеки stdio.h Нужно составить программу: Сформировать два...

Не работает проекция файла - C++ WinAPI
Привет всем. Проблема такая: COM порт принимает байты, и поток пишет их в файл. Если в функции write() использовать дескриптор...

Проекция 3Д на 2Д - Геометрия
Ну извиняйте Много прогуливал в школе :-http://www.enlight.ru/faq3d/articles/11.htm :) Добавлено через 1 час 34 минуты Вот еще...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Убежденный
Системный программист
Эксперт С++
15510 / 7008 / 1107
Регистрация: 02.05.2013
Сообщений: 11,441
Завершенные тесты: 1
10.01.2014, 10:27 #2
Цитата Сообщение от Lexa777 Посмотреть сообщение
Как доказать преподавателю: что я сделал для того что бы не было гонок программ???
Доказать можно тестами.

Цитата Сообщение от Lexa777 Посмотреть сообщение
Что та или иная программа не выполняется первой или не в свою очередь, что одна передала данные, вторая их приняла.
Навскидку: что произойдет, если запустить slave раньше, чем master ?
Lexa777
0 / 0 / 0
Регистрация: 10.11.2011
Сообщений: 85
10.01.2014, 11:01  [ТС] #3
Нужно теоретически объяснить!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.01.2014, 11:01
Привет! Вот еще темы с ответами:

Проекция раздела - Безопасность
Доброго времени суток! Появилос немного времени и решил вспомнить детство и установить себе сервер. В результате у меня создалась...

Аксонометрическая проекция - AutoCAD
Доброго времени суток! Необходимо построить аксонометрическую проекцию небольшой детальки (новичек в автокаде, да и с пространственным...

Проекция точки - Геометрия
Помогите пожалуйста решить, нужно Найти проекцию точки А , на прямую образованную пересечением плоскостей x+2y+37=12 и x-y=0

Проекция и перпендикуляр - Геометрия
Добрый день! Пожалуйста, объясните последовательно, как решается такое задание: Найти проекцию и перпендикуляр вектора (5,-2,4,0,3)...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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