У меня нормально работает socat, выполняющий мою команду, когда приходит соединение с предоставленными аргументами. Однако проблема, с которой я сталкиваюсь, заключается в том, что сокет находится в состоянии EOF, и в следующий раз, когда будет установлено соединение, для повторного запуска процесса потребуется 3 секунды. Процесс будет продолжаться вечно, так что думать, что EOF существует, можно, по крайней мере, в моем понимании.
Моя команда: socat -v -s -d -d tcp-listen:2600,reuseaddr,fork exec:"/usr/bin/cec-client $CEC_CLIENT_ARGS"
Соответствующие строки журнала:
2014/12/31 22:41:04 socat[4746] N socket 1 (fd 4) is at EOF
2014/12/31 22:41:05 socat[4746] N exiting with status 0
я пытался ignoreeof
на обоих концах безрезультатно. Я также пробовал устанавливать тайм-ауты, как -t
и -T
Если вы используете команду LISTEN, например OPENSSL-LISTEN
, TCP-LISTEN
и т. д. fork
опция отключит подключения к дочернему процессу, чтобы socat мог продолжать получать.
Пример:
socat - OPENSSL-LISTEN:443,method=TLS1.2,verify=0,cert=cert.pem,key=key.pem,fork