Основная проблема, которую вы должны рассмотреть, это то, какие данные вы передаете, поскольку это отчасти определит ваши варианты. Это сводится к тому, ограничены ли ваши данные или нет. Если он не ограничен, то подходит что-то ориентированное на поток, например, FIFO или сокеты; если это так, то вы могли бы лучше использовать такие вещи, как MQ или разделяемая память. Поскольку вы упоминаете как строки, так и структуры, трудно сказать, что подходит для вашего случая, хотя, если ваши строки ограничены каким-то разумным максимумом, вы можете использовать что угодно с незначительными изменениями.
Второе - это скорость. На этот вопрос никогда не бывает полностью правильного ответа, но обычно он звучит примерно так: общая память, MQ, FiFO, доменные сокеты, сетевые сокеты.
Третий - простота использования. Общая память - это самая большая PITA, так как вам приходится самостоятельно выполнять синхронизацию. Трубы просты, если длина вашего сообщения остается ниже размера PIPE_BUF. ОС справляется с большинством ваших головных болей с помощью MQ. Розетки достаточно просты, но у вас есть шаблон настройки.
Наконец, некоторые из механизмов IPC имеют варианты POSIX и SYSV. Обычно POSIX - это путь, если у типа SYSV нет какой-то функции, которая вам действительно нужна или нужна.
РЕДАКТИРОВАТЬ: ответ Count0 напомнил мне, что вам может быть интересно что-то более абстрактное и более высокий уровень. В дополнение к ACE вы можете посмотреть на Poco . И, конечно же, ни один SO-ответ не будет полным, если в нем не упоминается Boost .