2つのバイナリがあり、そのうちの1つ(questions.bin
)は「1 + 3とは何ですか?」などの質問を投げます。 STDOUTに送信し、STDINから回答を取得します。もう1つはanswers.bin
上記の形式のSTDIN質問を受け入れ、それをSTDOUTに印刷します。
私は彼らの出力をお互いにパイプできるようにしたいです。
./questions.bin | ./answers.bin | ./questions.bin
パイプでできる方法はありますか?そうでなければ、他に何をしますか?
答え1
答え2
/dev/fd/x
Linuxでは、名前付きパイプのように動作するパイプを参照するfd x属性を使用できます。
: | (./questions.bin | ./answers.bin) > /dev/fd/0
シェルにはシステムコールを介したyash
基本インターフェイスがあります。pipe()
パイプリダイレクト特徴:
(./questions.bin | ./answers.bin) >>|0
これにより、名前付きパイプを作成する必要があります(および排他的な生成を保証し、それに対するアクセス制限、後続または信号クリーンアップに関連する問題)。