This comand (serial port redirector) accepts a single connection on TCP:11313 :
socat PTY,link=/dev/ttyV1,echo=0,raw,unlink-close=0 TCP-LISTEN:11313,forever,reuseaddr
However when the connection is lost, the above socat process is killed and the client is not able to connect.
I can solve this by adding fork
option at the end of the above command. But then multiple clients will be able to connect. But I want to accept only one connection.
Any ideas how to achieve this?
You can limit the number of children with the max-children
option:
LISTEN option group, options specific to listening sockets
max-children= Limits the number of concurrent child processes [int]. Default is no limit.
With this you can limit the number of clients that can interact with the PTY to one, but won't prevent others from connecting. Others will simply queue until the first connection is closed. If you want to prevent that, I'd suggest to just wrap the socat call in a while true; do ..; done
loop:
while true; do
socat PTY,link=/dev/ttyV1,echo=0,raw,unlink-close=0 TCP-LISTEN:11313,forever,reuseaddr
done