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ć?

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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.