fgetsに指定していたstdin
は標準入力
というファイルポインタで、fopen
しなくても最初から
使える。標準入力はプログラムを普通に起動すればキーボードからの入力となる。
プログラムの起動の仕方によって、標準入力を切り替えることができる。
./program
→ 標準入力はキーボード
./program < file
→ 標準入力は file の内容
cmd | ./program
→ 標準入力は cmd を実行して出力されたもの
print
で何かを出力すると、それは
標準出力に書き出される。標準出力を表す
ファイルポインタは stdout
である。標準出力は
普通にプログラムを起動すれば端末(kterm)画面だが、プログラムの起動の仕方に
よって切り替えることができる。
./program
→ 標準出力は端末画面へ
./program > outputfile
→ 標準出力は outputfile へ
(outputfileの既存の内容はクリアされる)
./program >> outputfile
→ 標準出力は outputfile へ(追加)
./program | cmd2
→ 標準出力は cmd2コマンド の標準入力へ
プログラム起動時に、"<" や ">"
記号を使って
標準入力や標準出力を切り替えることをリダイレクト
という。
"|"
記号を使って、2つ(以上)のプログラムの標準出力と標準
入力をつなぐことをパイプという。
リダイレクトとパイプはシェルの持っている機能であり、 C言語プログラムの機能ではない。リダイレクトとパイプはRubyや その他の言語で作ったプログラム、元からあるコマンド、どこでも 利用できる。
シェルとは普段ktermでコマンドを打つときに使っているプログラムである。
入力データを自分で手入力せず、ほかのコマンドに作らせて さらに別のコマンドに処理させることで複雑な処理が手軽に行なえる。 その活用方法は後期に学習する。