Существует ли какой-либо инструмент, который оборачивает процесс (например, 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!)
Но проблема в том, что при наличии нескольких активных соединений выходные данные (с сервера) могут не отправляться клиенту, который отправил соответствующий входной сигнал.
Есть ли обходной путь для этого? Или есть другой инструмент? И, если возможно, инструмент должен «сериализовать» входные данные, чтобы не было условий гонки.
Мое намерение состоит в том, чтобы обернуть скрипт, который использует несколько библиотек, чтобы вместо того, чтобы запускать его каждый раз (что занимает довольно много времени), я просто устанавливаю соединение с запущенным процессом скрипта и отправляю команду для запуска.