Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как заставить две программы общаться между собой.

2.1K
24 октября 2002 года
PawelG
3 / / 24.10.2002
Привет.

Пишу я две программы, отдельно запущенные. Почему две, потому что одна на C++, другая просто консольная на чистом С. Надо как-то заставить их общаться друг с другом. У меня такие варианты, но не знаю как их реализовать:

1. Зааллокировать в системе кусок памяти. Тогда потом обе програмы могу обменяться информацией через эти ячейки памяти. Как выделить постоянный кусок пямяти ?
2. Через файл. Одно прога туда пишет, другая читает и обратно.
3. Через перусылку сообщений. Тогда тоже как ?

Буду благодарен ответам.
380
25 октября 2002 года
Arestov
285 / / 20.09.2000
То что тебе надо называется Interprocess Communication или сокращённо IPC смотри MSDN там есть примеры.

В кратце:

Цитата:
Originally posted by PawelG
1. Зааллокировать в системе кусок памяти. Тогда потом обе програмы могу обменяться информацией через эти ячейки памяти. Как выделить постоянный кусок пямяти ?


"Общая память" (как Shared Memory в Unix) делается в Windows используя File Mapping, одна прога создаёт файл назначает на него FileMapping вторая открывает этот FileMapping по известному имени. Filemapping позволяет общаться с файлом как с буффером в памяти, используя указатель.
Помимо общей памяти надо обеспецить механизм синхронизации чтобы программы исполняющиеся одновременно не мешали друг другу, синхронизации можно сделать именованым Mutex'ом, очень удобно, каждая прога пытается "завладеть" этим mutex'ом, и "ждёт завладения" та которая завладела, может писать в память что ей надо, или читать и быть на 100% уверена что другая в этот самый момент ничего там не затирает, отработав "отпускает" mutex и им завладевает другая программа и тоже работает и т.д. это обычная практика, есть и другие варианты синхронизации.

Цитата:
Originally posted by PawelG
2. Через файл. Одно прога туда пишет, другая читает и обратно.


см выше, тот вариант удобнее

Цитата:
Originally posted by PawelG
3. Через перусылку сообщений. Тогда тоже как ?


тут вообще простор, можно использовать Socket'ы, Mailslot'ы, Pipe'ы, подробности в MSND потому как эта тема большая и не стоит писать целую доку HOWTO в форум...

Удачи, тема интересная!

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог