0

Linuxで実行しているプログラムがあります

このプログラムは標準入力から入力を受け取ります

したがって、この方法で入力ファイルを使用して起動できます

myprogram < file

プログラムへの入力を避けるために

ここで、プログラムがコマンド出力から入力を取得するようにします。そんな感じ

myprogram < anycommand

ただし、コマンドではなくファイルを想定しているため、これは機能しません。

どうすればそれを機能させることができますか?それを機能させるためのシェル構文はありますか?

注:パイプのようなものは使用できませんanycommand | myprogram

4

3 に答える 3

3

通常(IMHO)myprogramはfileについて何も知りません。bash はmyprogramを起動してファイルを読み取り、ファイルの内容をmyprogramstdin に書き込みます。したがって、myprogramは stdin がファイルであることを認識してはなりません。したがって、任意のコマンド | myprogramが動作する必要があります。

ash で動作しない場合は、名前付きパイプ (mkfifo /tmp/testpipe) を作成できます。これで、プログラムを開始してmyprogram < /tmp/testpipe、入力を/tmp/testpipeに書き込むことができます。

于 2014-04-29T10:30:22.820 に答える
0

次のように使用する必要があります。

myprogram < <(anycommand)

これをプロセス代替と呼びます

于 2014-04-29T09:55:17.197 に答える