Как заставить две программы общаться между собой.
Пишу я две программы, отдельно запущенные. Почему две, потому что одна на C++, другая просто консольная на чистом С. Надо как-то заставить их общаться друг с другом. У меня такие варианты, но не знаю как их реализовать:
1. Зааллокировать в системе кусок памяти. Тогда потом обе програмы могу обменяться информацией через эти ячейки памяти. Как выделить постоянный кусок пямяти ?
2. Через файл. Одно прога туда пишет, другая читает и обратно.
3. Через перусылку сообщений. Тогда тоже как ?
Буду благодарен ответам.
В кратце:
1. Зааллокировать в системе кусок памяти. Тогда потом обе програмы могу обменяться информацией через эти ячейки памяти. Как выделить постоянный кусок пямяти ?
"Общая память" (как Shared Memory в Unix) делается в Windows используя File Mapping, одна прога создаёт файл назначает на него FileMapping вторая открывает этот FileMapping по известному имени. Filemapping позволяет общаться с файлом как с буффером в памяти, используя указатель.
Помимо общей памяти надо обеспецить механизм синхронизации чтобы программы исполняющиеся одновременно не мешали друг другу, синхронизации можно сделать именованым Mutex'ом, очень удобно, каждая прога пытается "завладеть" этим mutex'ом, и "ждёт завладения" та которая завладела, может писать в память что ей надо, или читать и быть на 100% уверена что другая в этот самый момент ничего там не затирает, отработав "отпускает" mutex и им завладевает другая программа и тоже работает и т.д. это обычная практика, есть и другие варианты синхронизации.
2. Через файл. Одно прога туда пишет, другая читает и обратно.
см выше, тот вариант удобнее
3. Через перусылку сообщений. Тогда тоже как ?
тут вообще простор, можно использовать Socket'ы, Mailslot'ы, Pipe'ы, подробности в MSND потому как эта тема большая и не стоит писать целую доку HOWTO в форум...
Удачи, тема интересная!