Zatrzymaj socat przed zakończeniem, gdy drugi koniec się zamknie

12

Chciałbym przekierować dane wejściowe i wyjściowe aplikacji do gniazda unix i połączyć się z tym gniazdem z innej sesji. Do tej pory robię to:

Po stronie „serwera”:

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

A po stronie „klienta”:

socat UNIX-CONNECT:/tmp/comm -

Działa całkiem dobrze, ale gdy tylko socatkończy się strona klienta , serwer również się kończy. Ale chciałbym, żeby nadal działało i łączyło się później ... Jak to zrobić?

Max Ried
źródło

Odpowiedzi:

12

Musisz użyć forkopcji, która obsługuje połączenie w procesie potomnym, aby proces nadrzędny próbował obsłużyć więcej połączeń.

W pierwszym terminalu:

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

W drugim terminalu:

$ socat UNIX-CONNECT:/tmp/comm -

Naciśnij Ctrl+ Cna drugim terminalu, przełącz się na pierwszy terminal i sprawdź, czy serwer nadal działa.

Cuonglm
źródło