Назад | Перейти на главную страницу

Всегда держи сокат в живых

У меня нормально работает 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

Благодаря: https://unix.stackexchange.com/a/283289/15954