2016-06-28 2 views
0

У меня есть несколько процессов, выполняющихся через fork() и данные, поступающие из сокета TCP. На основе заголовка прочитанных данных я хочу передать данные в один из нескольких процессов.Как передать переменные в разные процессы C++

Есть ли способ передать данные конкретному процессу и есть ли какие-либо прослушиватели, которые я могу использовать в этих процессах, чтобы избежать бесконечного цикла ожидания?

+1

Почему бы не создать поток каждый раз? Это не значит, что вы делаете тонну потоков, если используете async –

+1

@ IvanRubinson Я согласен, сам факт, что OP говорит, что он хочет общаться с процессами, кричит, что это должен быть поток, а не разветвленный процесс. –

+0

Я открыт для использования потоков; в этом случае есть простой способ отправить данные в конкретные потоки? –

ответ

0

То, о чем вы просите, является Interprocess Communication. Это зависит от платформы.

Для Linux я бы рекомендовал псевдотерминалы или PIPE. Linux Interprocess Communcation

Здесь приводится небольшой пример создания дочернего процесса pipe. Вы можете использовать poll, чтобы определить, когда есть данные для чтения в дочернем процессе.

Однако, как отмечали другие, вам может быть лучше обслуживаться многопоточность, чем многопроцессорная обработка.

+2

Общее название этой темы: ** IPC ** = Inter-Process Communication. «Google эти условия * (и/или, ищите их прямо здесь!) *, И вы сразу увидите, что есть * много * из «предшествующего уровня техники», который может вам помочь. ## * (Кроме того, * вы найдете фреймворки для построения полных серверов RPC = Remote Procedure-Call, например, которые вы сейчас находитесь в процессе с нуля!) Например, перейдите на сайт http://www.github.com и найдите «C++ RPC-сервер» ... Что вы делаете, так и не делайте этого. **: -) ** –

Смежные вопросы