パイプを永久プロセスで開始する方法

パイプを永久プロセスで開始する方法

次のように実行可能ファイルを実行するとします。

$ echo <params> | <process>

processパイプで実行されていない場合は、$ process &入力中に実行され続けます。上記のコマンドラインをprocess継続的に起動するには何が必要ですか?

修正する:

より正確には、スクロール後も画像が端末に表示され続けるようなw3mimgdisplay継続的なプロセスで実行することが可能です。w3mコマンドラインでこのようにプログラムを実行するにはどうすればよいですか?

echo -e '0;1;0;0;0;0;0;0;0;0;file.png\n4;\n3;' | /usr/lib/w3m/w3mimgdisplay

ベストアンサー1

名前付きパイプが必要なようです。

https://askubuntu.com/questions/449132/why-use-a-named-pipe-in​​stead-of-a-file

既定では、名前付きパイプを作成し、名前付きパイプから入力を受け取るプロセスを実行してから、必要なものを名前付きパイプに渡して、プロセスにそれを処理させます。

たとえば、

mkfifo /tmp/namedpipe
tail -f /tmp/namedpipe &
echo "BOO"> /tmp/namedpipe
echo "this" > /tmp/namedpipe

...これは(尾)/tmp/namedpipeに送信されたすべてを標準出力にエコーします。

catがEOFを受け取るとプロセスを終了するので、catの代わりにtailを使用します。

UPD。言う。

これをプロセスに渡すには、次のことが必要です。

tail -f /tmp/namedpipe | yourprocess &

アップ2。したがって、あなたの場合の順序は次のとおりです。

mkfifo /tmp/namedpipe 

---これはプロセスにデータを送信できるエントリポイントになります。

tail -f /tmp/namedpipe |  /usr/lib/w3m/w3mimgdisplay &

- これにより、所望の永久プロセスが作成され、後でパイプを介して送信されるすべてのアイテムが供給されます。

echo -e '0;1;0;0;0;0;0;0;0;0;file.png\n4;\n3;' > /tmp/namedpipe

画像を画面に表示する必要があります。

これ以降、/tmp/namedpipeに送信される他のすべての内容はコマンドの新しい行にエコーされ、画面にも表示されます。

おすすめ記事