Networking 用于包装进程以允许多个连接的工具

Networking 用于包装进程以允许多个连接的工具,networking,process,socat,Networking,Process,Socat,是否有任何工具包装一个进程(例如Bash),以便您可以与“共享”进程建立“多个”网络连接。每个连接都可以向流程发送输入(例如设置环境变量、运行外部命令),并从流程中获得相应的输出 到目前为止,我找到的最接近的工具是使用socat,如下所示: server% socat exec:bash tcp-listen:1234,reuseaddr,fork client1% socat - tcp:localhost:1234 client1% pwd client1% x=123 client2%

是否有任何工具包装一个进程(例如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!)
但问题是,当存在多个活动连接时,输出(来自服务器)可能不会发送到发送相应输入的客户端

有解决办法吗?还是有其他工具?如果可能的话,工具应该“序列化”输入,这样就不会有竞争条件


我的意图是包装一个使用多个库的脚本,这样,我就不用每次启动它(这需要相当长的时间),而是连接到正在运行的脚本进程,并发送一个要运行的命令。

我遇到了类似的问题,它在切换左右地址后消失了

因此,您可以在您的案例中尝试:

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

这里有一个关于gawk的网络和协同处理特性的优秀教程,您可以在这里自己学习。perl也可以这样做。本文引用了其他可能会有所帮助的工具(不是socat)。祝你好运。但是每个连接都会有单独的
bash
shell:在一个连接上设置
x=123
,不会影响另一个连接上的
echo$x
。我想要的是一个用于所有连接的共享shell。