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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
BlackVoiN69
0 / 0 / 0
Регистрация: 19.10.2012
Сообщений: 24
#1

Разделяемая память - C++

20.03.2013, 22:22. Просмотров 1433. Ответов 13
Метки нет (Все метки)

Добрый день!!!
Столкнулся вот с какой проблемой, мне необходимо написать программу крестики-нолики через разделяемую память. А как это сделать я не знаю. Помогите пожалуйста, либо литературой, либо кодом.
Буду приочень благодарен
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.03.2013, 22:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Разделяемая память (C++):

разделяемая память - C++
Всем привет! подскажите, пожалуйста, как решить такую проблему: У меня есть программа которая открывает 2 консольных окна. есть...

Разделяемая память и apache CGI - C++
Что есть. Есть машина с windows 7 и апачем на борту. Так же есть программа А, написанная на c++, которая в разделяемую память кладет...

Разделяемая область памяти - C++
Здравствуйте. Нам задали такое задание - написать программку(ки, ибо больше одного запущенного процесса) и запустить, чтобы выполнилось...

Статическая память,Динамическая память. - C++
a) Статическая память. Двумерный массив. Дан массив целых чисел. В массиве есть отрицательные числа. Определить координаты левого нижнего...

Realloc выделяет память для массива int и не выделяет память для массива double - C++
Скажите пожалуйста, почему вот этот код работает: #include <iostream> #include <windows.h> using namespace std; int main()...

Память - C++
Здравствуйте, пишу программу, суть такова: Нужно строки из файла отсортировать по длине строки, а строки равной длины отсортировать по...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
20.03.2013, 22:29 #2
Может boost::shared_ptr может ?
BlackVoiN69
0 / 0 / 0
Регистрация: 19.10.2012
Сообщений: 24
20.03.2013, 22:37  [ТС] #3
Необходимо написать консольное прложение. Короче запускаешь одно приложение, а потом второе. И начинаешь играть соответсветнно. Вот такие дела, и причем нужно использовать разделяемую память
Nagdiel
114 / 114 / 3
Регистрация: 23.12.2012
Сообщений: 195
20.03.2013, 23:17 #4
Qt -> QSharedMemory
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
20.03.2013, 23:20 #5
BlackVoiN69, винда?
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
HANDLE hMapObject = CreateFileMapping( 
                INVALID_HANDLE_VALUE, // используем файл подкачки
                NULL,                 // атрибуты защиты по умолчанию
                PAGE_READWRITE,       // доступ к чтению/записи
                0,                    // размер: старшие 32 бита
                Size,            // размер: младшие 32 бита
                _T("NAME"));     // имя объекта отображения
 
           if (!hMapObject)
           {
               //ERROR
           }
 
LPVOID lpv = MapViewOfFile( 
                      hMapObject,     // объект представления проецирования
                      FILE_MAP_WRITE, // доступ к чтению записи
                      0,              // старшее смещение:  от отображения
                      0,              // младшее смещение:   начало
                      0);
           
           if (!lpv)
           {
                //ERROR
           }
 
           if (GetLastError() != ERROR_ALREADY_EXISTS)
           {
                // Первый процесс
           }
           else
           {
                // Второй, третий и т.д. процесс
           }
 
 
           UnmapViewOfFile(lpv);
 
           CloseHandle(hMapObject);
DU
1483 / 1059 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
20.03.2013, 23:29 #6
курите инфу на тему Inter-Process Communication (IPC)
http://ru.wikipedia.org/wiki/%D0%9C%...B2%D0%B8%D0%B5
и реализацию на разделяемой памяти. лучше пользоваться готовыми быблиотеками чем голым системным API.
К упомянутому Qt можно добавить еще бустовую реализацию:
http://www.boost.org/doc/libs/1_53_0...processes.html
BlackVoiN69
0 / 0 / 0
Регистрация: 19.10.2012
Сообщений: 24
20.03.2013, 23:33  [ТС] #7
go, да винда. разобрался, только один вопрос, а в каком месте писать чтобы процессы чередовались, и могли считать и записать данные?
kravam
быдлокодер
1694 / 881 / 44
Регистрация: 04.06.2008
Сообщений: 5,441
21.03.2013, 02:45 #8
А если использовать dll?
Лепишь dll, делаешь нужную тебе секцию разделяемой и вуаля. Оба процесса загружают эту dll, один в неё пишет другой из неё читает, возможны варианты. Вот тебе и разделяемая память.
BlackVoiN69
0 / 0 / 0
Регистрация: 19.10.2012
Сообщений: 24
21.03.2013, 09:13  [ТС] #9
я знаю как реализовать, но у меня проблема с синтаксисом. Как записать я не знаю
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
21.03.2013, 10:39 #10
Цитата Сообщение от kravam Посмотреть сообщение
один в неё пишет другой из неё читает
Не понял? Поясните?
Цитата Сообщение от kravam Посмотреть сообщение
Вот тебе и разделяемая память.
ТСу нужны общие данные, хотя я и сам не знаю, что ему нужно.
kravam
быдлокодер
1694 / 881 / 44
Регистрация: 04.06.2008
Сообщений: 5,441
21.03.2013, 11:28 #11
Цитата Сообщение от go Посмотреть сообщение
Не понял? Поясните
А чё непонятного? Один пишет, другой читает. Всё просто. Если именно общие данные для обоих процессов нужны (оба читают), тогда всё ещё проще. Пусть уточняет.
BlackVoiN69
0 / 0 / 0
Регистрация: 19.10.2012
Сообщений: 24
22.03.2013, 20:48  [ТС] #12
мне нужно реализовать крестики нолики. Команды крестика и нолика записываются в динамическую память что непонятного????
kravam
быдлокодер
1694 / 881 / 44
Регистрация: 04.06.2008
Сообщений: 5,441
22.03.2013, 23:50 #13
Ну в первом посте ты ничего не говорил про динамическую память. Между прочим.
Avazart
Эксперт С++
7148 / 5325 / 276
Регистрация: 10.12.2010
Сообщений: 23,573
Записей в блоге: 17
23.03.2013, 00:42 #14
Цитата Сообщение от BlackVoiN69 Посмотреть сообщение
мне нужно реализовать крестики нолики. Команды крестика и нолика записываются в динамическую память что непонятного????
Все непонятно ...
Судя по
Необходимо написать консольное прложение. Короче запускаешь одно приложение, а потом второе. И начинаешь играть соответсветнно.
Тебе нужно организовать сетевое приложение типа клиент/сервер (если по хорошему и без изврата подходить к задаче)
Нафига тут
нужно использовать разделяемую память
Вообще не понятно ...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.03.2013, 00:42
Привет! Вот еще темы с ответами:

Указатели и память - C++
Народ как указателю присвоить определённый адрес? P.S. Цитирую задание "Пользуясь указателями выдать на печать адреса этих символов и...

Статическая память - C++
Если я на этапе компиляции выделил слишком много памяти. Например зарезервировал память под огромный массив.Но в системе нет столько памяти...

Динамическая память с++ - C++
Как использовать динамическую память в с++

Оперативная память (СИ/СИ++) - C++
Подскажите пожалуйста, как можно на си/си++ "взять" из оперативной памяти пароли, вводимые в каких либо программах или какой то одной...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
23.03.2013, 00:42
Ответ Создать тему
Опции темы

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