8

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 に表示するにはどうすればよいでしょうか?

4

1 に答える 1

4

2 番目の引数に「STDIO」アドレス タイプを使用します。これは双方向アドレスです。コンソールから入力データを読み取って反対側に送信し、反対側からデータを受信して​​コンソール出力に書き込みます。言及するのは良いこと-です。ダッシュは stdio のショートカットです。

于 2015-01-27T18:59:41.903 に答える