Linux Socat在连接关闭后终止

Linux Socat在连接关闭后终止,linux,socat,Linux,Socat,此comand(串行端口重定向器)在TCP:11313: socat PTY,link=/dev/ttyV1,echo=0,raw,unlink-close=0 TCP-LISTEN:11313,forever,reuseaddr 但是,当连接丢失时,上述socat进程将被终止,客户端无法连接 我可以通过在上述命令末尾添加fork选项来解决这个问题。但是,多个客户端将能够连接。但我只想接受一个连接 如何实现这一点有什么想法吗?您可以使用max children选项限制子项的数量: 侦听选项组,

此comand(串行端口重定向器)在TCP:11313:

socat PTY,link=/dev/ttyV1,echo=0,raw,unlink-close=0 TCP-LISTEN:11313,forever,reuseaddr
但是,当连接丢失时,上述socat进程将被终止,客户端无法连接

我可以通过在上述命令末尾添加
fork
选项来解决这个问题。但是,多个客户端将能够连接。但我只想接受一个连接


如何实现这一点有什么想法吗?

您可以使用
max children
选项限制子项的数量:

侦听选项组,特定于侦听套接字的选项

麦克斯儿童= 限制并发子进程的数量[int]。 默认值没有限制

这样,您可以将可以与PTY交互的客户端数量限制为一个,但不会阻止其他客户端连接。其他人只需排队,直到第一个连接关闭。如果您想避免这种情况,我建议将socat调用包装为
,而不是true;做完成
循环:

为true时;做
socat PTY,link=/dev/ttyV1,echo=0,raw,unlink-close=0 TCP-LISTEN:11313,forever,reuseaddr
完成

最好在睡眠时使用
;做完成循环
,因为某些shell无法正确处理此循环中的SIGINT信号,并且您可能无法正确中断循环是。我用准确的命令更新了答案。该代码段在无限循环中运行socat,每次退出时都会立即重新启动。如果您从未使用过它们,请考虑Gabor的提示,并以<代码> >睡眠1 < /代码>替换初学者。可能是Ser2NET:(Maquefel)是否有Sel2NET.对我来说,看起来他们做的是完全一样的。我有-ser2net是一个专门的东西,它不能做像socat这样的大多数事情,它是专门为将串行数据转发到以太网而设计的。但它的行为完全符合您的需要-一个端口-一个连接,在连接关闭时不会退出,并会通知新的传入连接有关端口正在使用。@Maquefel I def将检查此情况,谢谢!