次のように実行可能ファイルを実行するとします。
$ 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-instead-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に送信される他のすべての内容はコマンドの新しい行にエコーされ、画面にも表示されます。