IPC между Qt и C/C ++

Мне нужно отправить/получить данные между двумя процессами. Один из них будет использовать Qt (4 или 5). Этот процесс будет работать все время (например, фоновый процесс).

Другой процесс будет запущен, а затем он сможет отправить argv в первый процесс и получить от него ответ .

Второй процесс должен запускаться как можно быстрее, поэтому использование QtCore - это последнее средство. Смысл, мне нужно, чтобы он был как можно малым и быстрым, поэтому мне нужно было бы использовать простой C/C ++ без каких-либо внешних библиотек.

Любые идеи, как это можно сделать?

Если это невозможно, мне придется использовать QtCore во втором процессе. Знаете ли вы, сколько медленнее было бы из-за QtCore vs plain C/C ++? (с точки зрения времени запуска).

С уважением

РЕДАКТИРОВАТЬ:

Я не могу использовать QBus, так как это должно быть совместимо с Mac/Linux/Windows.

4
Вы используете Boost?
добавлено автор cmannett85, источник
@deong Я не предполагал, что это не так. Я просто запрашивал дополнительную информацию о приложении OP.
добавлено автор cmannett85, источник
@deong вы имеете в виду использовать QSocket, а затем просто читать/писать в/из него?
добавлено автор alexandernst, источник
@ cmannett85 нет, нет Boost. Это так тяжело, как QtCore
добавлено автор alexandernst, источник
«Это так же тяжело, как и QtCore». Многие классы повышения только для заголовков (шаблоны) - тогда вы платите только за то, что используете.
добавлено автор Frank Osterfeld, источник
Почему бы просто написать Qt-процесс как обычный сервер и не прослушивать его на порт, к которому может подключиться любой клиент? Не существует хорошего кросс-платформенного механизма IPC, встроенного в C или C ++ без «внешних библиотек», но такие вещи, как libcurl, намного легче Qt, если вам просто нужна быстрая поддержка сети без необходимости настраивать код для каждой платформы.
добавлено автор deong, источник
Да, вы можете использовать QSocket на сервере. На клиенте любой способ записи и чтения в/из сокета работает отлично. Кроме того, @ cmannett85, Boost, как правило, довольно легкий во время выполнения.
добавлено автор deong, источник

1 ответы

Если он должен быть полностью совместим с кросс-платформой, ваш лучший вариант, скорее всего, будет называться сокетами/именованными каналами, которые должны работать на каждой платформе. Должны взять вас на нужную вам информацию для настройки сокета. Вам все равно понадобится код обработки сети в вашем чистом приложении C ++, но он должен быть значительно меньше накладных расходов, чем Qt-Core и Qt-Network.

Вы также можете сделать это с разделяемой памятью, но я предпочитаю метод сокета для простоты.

4
добавлено
Думаю, я поеду с сокетами. Спасибо :)
добавлено автор alexandernst, источник
pro.cxx
pro.cxx
3 049 участник(ов)

C/C++ chat 0. Простые вопросы, лабы и о IDE — в чат новичков @supapro 1. Не хамим, не переходим на личности, не вбрасываем утверждения без доказательств 2. No Ads, offtop, flood Объявления о вакансиях и евенты - в лс @AlexFails https://t.me/ProCxx/259155

supapro.cxx
supapro.cxx
1 925 участник(ов)

Чат для тех, кто немного знает C++, простые вопросы по реализации, синтаксису и ide – сюда, а для другого есть: /Главный чат по серьезным вопросам — @ProCxx /Чат по обсуждению всего — @fludpac

Qt
Qt
703 участник(ов)

Группа взаимопомощи Qt.Делимся советами и помогаем друг другу. Наш информационный канал @ProQt Полезная информация для начинающих: #newcomer Познавательная информация: #fyi #didyouknow Наши друзья: Чат с/с++ @ProCxx

C++ Russia
C++ Russia
384 участник(ов)

Сообщество разработчиков C++ в Telegram.

cxx.Дискуссионная
cxx.Дискуссионная
298 участник(ов)

это не двач, общайтесь вежливо; разговор на почти любые темы; Не согласны с баном? В лс @AlexFails, @ivario

C++ для маленьких и тупых
C++ для маленьких и тупых
105 участник(ов)

Лоу левел (по среднему IQ участников) чатик ExtremeCode @extremecode Флудилка @extremecode_rest