linuxにはパイプというものがあり、例えば
// prog1.c #include<stdio.h> int main(void){ printf("hello world!\n"); return 0; } // prog2.c #include<stdio.h> int main(void){ char c; while( (c = getchar() ) != EOF){ printf("%c", c); } return 0; }
これをそれぞれコンパイルして次のようにコマンドを打つ。
> ./pro1 | ./pro2
すると出力は次のようになる。
hello world!
つまりパイプ機能とは | の前のプログラムの標準出力を | の後の標準入力につなぐ機能らしい。
ここでtxtというファイルに「HELLO WORLD!」という内容を書き込んでおく。
そして次のコマンドを実行する。
> ./pro1 | ./pro2 <txt
これは下のように出力される
HELLO WORLD!
つまり、パイプよりファイル入力の方が優先されるらしい。
ファイル入出力はリダイレクトと呼ばれるので、パイプ < リダイレクトが成り立つのだろう。