【问题标题】:Tool to wrap a process to allow multiple connections包装进程以允许多个连接的工具
【发布时间】: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


【解决方案1】:

我也遇到过类似的问题,左右切换地址后就消失了。

所以你可以试试你的情况:

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

【讨论】:

  • 但是您会为每个连接获得单独 bash shell:在一个连接上设置x=123,不会影响另一个连接上的echo $x。我想要的是一个用于所有连接的 shared shell。
猜你喜欢
  • 2019-07-22
  • 2017-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多