UNIX ソケット (実際には、 Linux 固有と思われる抽象的なソケット) を介して通信できるプロセスがあります。
このプロセスにコマンドを送信する必要があるシェル スクリプトを作成しています。この目的のために SOCAT を使用してみることにしました。(1)抽象ソケットに接続する方法、(2)単一のコマンド(文字列)を送信する方法、(3)応答を読み取って標準出力に出力する方法を理解しようとしています。
これまでのところ、次のように言うだけで簡単に接続できます。
socat ABSTRACT-CONNECT:mysocket STDIN
これにより STDIN がソケットに接続されるため、手動でコマンドを入力することがわかっている場合、ソケットは文字列を読み取り、結果の応答をコンソールに出力します。
スクリプトで socat を実行する場合を除き、STDIN への文字列の送信を自動化する必要があります。これを行う最も簡単な方法は、文字列を STDIN にパイプすることです。" " というコマンドがあるstatus
とします。
echo status | socat ABSTRACT-CONNECT:mysocket STDIN
結果が stdout に送信されないことを除いて、これは機能しているようです (socat はエラーを報告しません)。むしろ、呼び出しは応答なしで単に返されます。では、ソケットから 1 行を読み取り、その結果を stdout に表示するにはどうすればよいでしょうか?