標準入力へのリダイレクトを使用して、名前付きパイプを介して断続的に送信されるデータを読み取ることは可能ですか?
私がやりたいことはこれです:
$ mkfifo pipe
$ ./test < pipe
別の端末で:
$ cat datafile > pipe
$ cat datafile > pipe
パイプへの情報のダンプを繰り返します。これは初回のみ有効です。
動作を示すテスト用のデモ プログラムを次に示します。
int main(int argc, char *argv[]) {
char input_string[30];
while(1) {
while( cin.read(input_string, 30) || cin.gcount()!=0 ) {
cout << "!" << endl;
}
}
return 1;
}
どうしたの?リダイレクトは、パイプへの単一の送信のコンテンツのみを提供しますか? パイプの名前をパラメーターとして受け取り、この方法で書き込むために開いたままにする実際の製品コードのバージョンを既に作成しました。おそらくそれが答えです。しかし、リダイレクトでこれを行う方法があるかどうか疑問に思っています。