web-dev-qa-db-ja.com

他の端が閉じたときにsocatが終了しないようにする

アプリケーションの入出力をUNIXソケットにリダイレクトし、別のセッションからそのソケットに接続したいのですが。これまでに行っていることは次のとおりです。

「サーバー」側:

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

そして「クライアント」側では:

socat UNIX-CONNECT:/tmp/comm -

かなりうまくいきますが、クライアント側のsocatが終了するとすぐに、サーバーも終了します。しかし、実行を続け、後で再接続したいのですが、どうすれば実現できますか?

10
Max Ried

子プロセスで接続を処理するforkオプションを使用して、親プロセスがより多くの接続を処理するようにする必要があります。

最初のターミナルで:

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

2番目のターミナル:

$ socat UNIX-CONNECT:/tmp/comm -

押す Ctrl+C 2番目のターミナルで、最初のターミナルに切り替えて、サーバーがまだ実行中であることを確認します。

11
cuonglm