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

Обмен данными между процессами - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ С++ || C http://www.cyberforum.ru/cpp/thread189062.html
Здравствуйте. Мой один друг создает игры на GameMaker и он решил перейти на более высоки язык. Я ему предложил С++, а он хочет просто С. Подскажите что лучше для разработки игр.
C++ Нужен совет! Доброго времени суток! Возможно таких тем как эта было уже миллион.. но всё же, хотелось бы услышать ваше мнение. Поставил перед собой задачу научиться программировать. Цели на первое время - какие-нибудь маленькие программки на подобии таймера и т.п. Позже хотелось бы написать пару программ которые могли бы выполнять за меня действия.. ну что-то на подобии ботов.. боты эти будут работать с... http://www.cyberforum.ru/cpp/thread189033.html
C++ C++ форматирование (создание файловой системы) Fat16
Возникла необходимость в написании утилиты в С++, позволяющей создавать файловую систему Fat16. Теоретически все понятно, но вот реализация в данной среде - уже тяжело. Очень нужна помощь!!!! С API не сталкивалась, в среде С++ работаю недавно((((( Заранее огромное спасибо!!!!!
Функция оператора "+" класса valarray, нужен пример C++
valarray<T> operator+() const; Друзья, дайте пример использования такого кода. Насколько я понимаю, в скобках должен быть аргумент. А его нет. Вопрос: что же тогда плюсуется-то? Спасибо (НА всякий случай: взято отсюда: http://www.cplusplus.com/reference/std/valarray/valarray/operators/)
C++ Метод сжатия Хаффмана http://www.cyberforum.ru/cpp/thread188594.html
Есть Метод сжатия Хаффмана или нет и как его использовать ? покажите если можите ? ну те кто уже знает !
C++ Построить гистограмму со столбцами в виде пирамид - Пользователь задает n значений (n вводит пользователь), где каждое значение – это количество детей, рожденных в каком-либо городе в определенный период времени (например, месяц). Тип диаграммы: гистограмма со столбцами в виде пирамид. подробнее

Показать сообщение отдельно
Andsteadur
153 / 137 / 3
Регистрация: 23.05.2009
Сообщений: 275
29.11.2010, 04:07  [ТС]     Обмен данными между процессами
Решил использовать для обмена данными FileMapping. Где то прочитал что он быстро работает. (так ли это?) Сама работа понятна с файлмэппингом. Но у меня нескольким дочерним процессам нужно будет читать/писать информацию в проецируемый в память файл. Необходимо было прикрутить какой-нибудь механизм синхронизации. Я решил сделать через семафоры.

Сам семафор в вызывающем процессе создается замечательно. НО вот незадача - пытаюсь открыть семафор в дочернем процессе при помощи функции
C++
1
2
3
4
5
HANDLE OpenSemaphore(
  DWORD dwDesiredAccess,
  BOOL bInheritHandle,
  LPCTSTR lpName
);
и не получается. OpenSemaphore возвращает NULL.

Вызывающий процесс:
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
class WINDOW : public CFrameWnd   
{
private:
    HANDLE hSemaphore;
           ...
public:
    WINDOW (int);
            afx_msg void Обработчик_кнопки ();
            DECLARE_MESSAGE_MAP();
    ~WINDOW();
};
 
BEGIN_MESSAGE_MAP(WINDOW, CFrameWnd)   
    ON_COMMAND(ид_кнопки,обработчик_кнопки)
END_MESSAGE_MAP()
 
WINDOW::WINDOW (int r)  
{
...
hSemaphore=CreateSemaphore(NULL,1,1,"WCS");
...
}
 
afx_msg void WINDOW::Обработчик_кнопки ()
{
...
STARTUPINFO cif;
ZeroMemory(&cif,sizeof(STARTUPINFO));
PROCESS_INFORMATION pi;
CreateProcess(".\\exe\\warcraft_unit.exe",NULL,NULL,NULL,false,NULL,NULL,NULL,&cif,&pi);
...
}
Вызываемый процесс(диалог в качестве главного окна):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class  MY_DIALOG: public CDialog
{
private:
    HANDLE hSem;
           ...;
public:
    MY_DIALOG ( char  * DialogName, CWnd  *Owner );
    DECLARE_MESSAGE_MAP();
           ~MY_DIALOG();
};
 
MY_DIALOG::MY_DIALOG ( char  * DialogName, CWnd  *Owner ): CDialog ( DialogName, Owner) 
{
    hSem=OpenSemaphore(NULL,false,"WCS");
    if(hSem == NULL) {
        MessageBox("Unable to open semaphore", "Error!", MB_ICONSTOP);
        exit(1);
        }
           ...
}
Что следует сделать, чтобы открыть семафор в дочернем процессе?

Добавлено через 3 часа 55 минут
ЭЭэ все разобрался в своих ошибках... на данный момент помощь не требуется.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru