Инструмент, чтобы обернуть процесс, чтобы разрешить несколько соединений - PullRequest
1 голос
/ 25 февраля 2012

Существует ли какой-либо инструмент, который оборачивает процесс (например, Bash), чтобы вы могли установить «несколько» сетевых подключений к «общему» процессу. Каждое соединение может отправлять входные данные (например, задавать переменные среды, запускать внешние команды) в процесс и получать соответствующие выходные данные процесса.

Ближайший инструмент, который я нашел до сих пор, использует socat, например:

server% socat exec:bash tcp-listen:1234,reuseaddr,fork

client1% socat - tcp:localhost:1234
client1% pwd
client1% x=123

client2% socat - tcp:localhost:1234
client2% echo $x   # print 123 (but on client1!)

Но проблема в том, что при наличии нескольких активных соединений выходные данные (с сервера) могут не отправляться клиенту, который отправил соответствующий входной сигнал.

Есть ли обходной путь для этого? Или есть другой инструмент? И, если возможно, инструмент должен «сериализовать» входные данные, чтобы не было условий гонки.

Мое намерение состоит в том, чтобы обернуть скрипт, который использует несколько библиотек, чтобы вместо того, чтобы запускать его каждый раз (что занимает довольно много времени), я просто устанавливаю соединение с запущенным процессом скрипта и отправляю команду для запуска.

1 Ответ

0 голосов
/ 10 апреля 2014

У меня была похожая проблема, и она исчезла после переключения левого и правого адреса.

Так что вы можете попробовать в вашем случае:

socat tcp-listen:1234,reuseaddr,fork exec:bash
...