Остановить остановку соката при закрытии другого конца

12

Я хотел бы перенаправить ввод и вывод приложений в сокет Unix и подключиться к этому сокету из другого сеанса. На данный момент я делаю следующее:

На стороне сервера:

socat EXEC:"command" UNIX-LISTEN:/tmp/comm

А на стороне «клиента»:

socat UNIX-CONNECT:/tmp/comm -

Он работает довольно хорошо, но как только клиентская сторона socatзавершает работу, сервер также завершает свою работу. Но я бы хотел, чтобы он продолжал работать и позже подключился ... Как мне это сделать?

Макс Рид
источник

Ответы:

12

Вы должны использовать forkопцию, которая обрабатывает соединение в дочернем процессе, чтобы родительский процесс попытался обработать больше соединений.

В первом терминале:

$ socat - UNIX-LISTEN:/tmp/comm,fork

Во втором терминале:

$ socat UNIX-CONNECT:/tmp/comm -

Нажмите Ctrl+ Cво втором терминале, переключитесь на первый терминал и увидите, что ваш сервер все еще работает.

cuonglm
источник