是否有任何工具包装进程(例如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!)
但问题是,当有多个活动连接时,输出(来自服务器)可能不会转到发送相应输入的客户端。
有解决方法吗?或者还有其他工具吗?如果可能的话,该工具应该“序列化”输入,因此不存在竞争条件。
我的目的是包装一个使用多个库的脚本,这样每次都不需要启动它(需要相当长的时间),我只是连接到正在运行的脚本进程,然后发送一个命令来运行。
答案 0 :(得分:0)
我遇到了类似的问题,在切换左右地址后它就消失了。
所以你可以试试你的情况:
socat tcp-listen:1234,reuseaddr,fork exec:bash