Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ С++ || C https://www.cyberforum.ru/ cpp/ thread189062.html
Здравствуйте. Мой один друг создает игры на GameMaker и он решил перейти на более высоки язык. Я ему предложил С++, а он хочет просто С. Подскажите что лучше для разработки игр.
Нужен совет! C++
Доброго времени суток! Возможно таких тем как эта было уже миллион.. но всё же, хотелось бы услышать ваше мнение. Поставил перед собой задачу научиться программировать. Цели на первое время -...
C++ C++ форматирование (создание файловой системы) Fat16
Возникла необходимость в написании утилиты в С++, позволяющей создавать файловую систему Fat16. Теоретически все понятно, но вот реализация в данной среде - уже тяжело. Очень нужна помощь!!!! С API...
C++ Функция оператора "+" класса valarray, нужен пример valarray<T> operator+() const; Друзья, дайте пример использования такого кода. Насколько я понимаю, в скобках должен быть аргумент. А его нет. Вопрос: что же тогда плюсуется-то? Спасибо (НА... https://www.cyberforum.ru/ cpp/ thread188681.html
C++ Метод сжатия Хаффмана https://www.cyberforum.ru/ cpp/ thread188594.html
Есть Метод сжатия Хаффмана или нет и как его использовать ? покажите если можите ? ну те кто уже знает !
Построить гистограмму со столбцами в виде пирамид C++
- Пользователь задает n значений (n вводит пользователь), где каждое значение – это количество детей, рожденных в каком-либо городе в определенный период времени (например, месяц). Тип диаграммы:...
C++ Восстановление FAT16
Мне очень нужна помощь опытных программистов. Возникла проблема: нужно написать программу по востановлению FAT 16, т.е. восстановление кластерной цепочки..Ума не приложу как то делается на С++....
C++ Можно ли (и как) на С++ перехватить действия сторонней программы в windows? Например фотожопа. Возможно ли на С++ написать некоторую программу, которая бы фиксировала все действия, производимые пользователем в фотошопе (наложил фильтр, выбрал другой инструмент и т.п.)? Т.е.... https://www.cyberforum.ru/ cpp/ thread188094.html
C++ дата => дни с 1990 года https://www.cyberforum.ru/ cpp/ thread188006.html
задача такая, вводится дата, например 11.11.2010 и нужно перевести её в дни с начала например 1990 года... как можно проще с учётом весокосных годов и тд.. и если не сложно, побольше комментариев
C++ Вызов деструкторов членов класса у меня есть класс поля которого тоже классы...при выходе из конструктора вызывается деструктор для его полей..даже для указателей...что делать?как этого избежать? https://www.cyberforum.ru/ cpp/ thread187784.html
153 / 137 / 34
Регистрация: 23.05.2009
Сообщений: 275
29.11.2010, 04:07  [ТС] 0

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

29.11.2010, 04:07. Просмотров 5662. Ответов 6
Метки (Все метки)

Ответ

Решил использовать для обмена данными 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 минут
ЭЭэ все разобрался в своих ошибках... на данный момент помощь не требуется.

Вернуться к обсуждению:
Обмен данными между процессами
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.11.2010, 04:07
Готовые ответы и решения:

Обмен данными между потоками
Здравствуйте уважаемые форумчане! Реализую многопоточное приложение. Один поток в реальном времени...

Обмен данными между компьютером и ПЛК по TCP
Добрый день! Подскажите пожалуйста, реально ли написать программу на C++ Builder для получения...

Обмен данными между C++ Builder и Java компонентами socket-ов
Всем доброго времени суток. Не знаю, следует-ли создавать эту тему именно в данном разделе, т.к....

Обмен данными между RAD Studio Berlin и cmd
Всем привет. Как реализовать обмен данными между C++ и cmd. Отправляю команду в консоль, а из...

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