【发布时间】:2023-03-31 01:30:01
【问题描述】:
是否有任何工具可以封装进程(例如 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!)
但问题是当有多个活动连接时,输出(来自服务器)可能不会到达发送相应输入的客户端。
有解决办法吗?还是有其他工具?如果可能的话,该工具应该“序列化”输入,这样就不会有竞争条件。
我的意图是包装一个使用多个库的脚本,这样我就不必每次都启动它(这需要相当长的时间),而是与正在运行的脚本进程建立连接,并发送一个要运行的命令。
【问题讨论】:
-
home.vr-web.de/Juergen.Kahrs/gawk/gawkinet.html#Top 上有一个关于 gawk 的网络和协同处理功能的优秀教程,您可以在其中自行学习。也可以用 perl 做同样的事情。这篇文章引用了其他可能有帮助的工具(不是 socat)。祝你好运。
标签: networking process socat