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

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

Восстановить пароль Регистрация
 
Lexa777
0 / 0 / 0
Регистрация: 10.11.2011
Сообщений: 84
09.01.2014, 23:47     Проекция файла! #1
Как доказать преподавателю: что я сделал для того что бы не было гонок программ???
Что та или иная программа не выполняется первой или не в свою очередь, что одна передала данные, вторая их приняла...

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


Написать две программы. Первая программа создает проекцию файла в памяти и выделяет для нее блок адресов размером 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++ Существует ли проекция точки?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Убежденный
Системный программист
 Аватар для Убежденный
14175 / 6190 / 981
Регистрация: 02.05.2013
Сообщений: 10,296
Завершенные тесты: 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     Проекция файла!
Ответ Создать тему
Опции темы

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