是否有任何工具可以包装进程(例如 Bash),以便您可以与“共享”进程建立“多个”网络连接。每个连接都可以向进程发送输入(例如设置环境变量、运行外部命令),并从进程中获得相应的输出。
到目前为止,我发现的最接近的工具是 using 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!)
但问题是当有多个活动连接时,输出(来自服务器)可能不会到达发送相应输入的客户端。
有解决方法吗?还是有其他工具?如果可能的话,该工具应该“序列化”输入,这样就不会有竞争条件。
我的目的是包装一个使用多个库的脚本,这样我就不必每次都启动它(这需要相当长的时间),我只是连接到正在运行的脚本进程,并发送一个要运行的命令。