Verhindern Sie, dass socat beendet wird, wenn das andere Ende geschlossen wird

10

Ich möchte die Eingabe und Ausgabe einer Anwendung auf einen Unix-Socket umleiten und von einer anderen Sitzung aus eine Verbindung zu diesem Socket herstellen. Was ich bisher mache, ist folgendes:

Auf der "Server" -Seite:

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

Und auf der "Client" -Seite:

socat UNIX-CONNECT:/tmp/comm -

Es funktioniert ziemlich gut, aber sobald die Clientseite socatbeendet wird, wird auch der Server beendet. Aber ich möchte, dass es weiterläuft und sich später wieder verbindet ... Wie schaffe ich das?

Max Ried
quelle

Antworten:

11

Sie müssen die forkOption verwenden, die eine Verbindung in einem untergeordneten Prozess verarbeitet. Lassen Sie den übergeordneten Prozess versuchen, mehr Verbindungen zu verarbeiten.

Im ersten Terminal:

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

Im zweiten Terminal:

$ socat UNIX-CONNECT:/tmp/comm -

Drücken Sie Ctrl+ Cim zweiten Terminal, wechseln Sie zum ersten Terminal und sehen Sie, dass Ihr Server noch läuft.

cuonglm
quelle