UNIXで実行されるプログラム・コマンドにはデータが出力先へ出て行く道として 標準出力と標準エラー出力という2つが最初から用意されている。
C言語などでプログラムを創る場合には、正しく計算できたデータは標準出力に出力し、
データが見つからない、計算結果がおかしい、などの場合には標準エラー出力から
エラーメッセージを出力する。
fprintf(stderr, ...)などを使うと標準エラー出力にデータを出力することができる。
(stderrが標準エラー出力を表している)
標準出力・標準エラー出力はリダイレクションで切替えることができる。
リダイレクションには上記以外にもいくつかの種類がある。
下のput.cというプログラムを使ってリダイレクションの実験をしてみよう。
# cat put.c
#include <stdio.h>
main()
{
printf("stdout\n"); /* 標準出力へ出力される */
fprintf(stderr, "stderr\n"); /* 標準エラー出力へ出力される */
}
# cc -o put put.c
# put
stdout
stderr
# put > data
stderr <- なぜstderrが出力されたのか?
# cat data
stdout <- なぜstdoutがdataファイルに書かれているのか?
# put >& data <- なぜ何も出力されないのか?
# cat data
stdout <- なぜstdout,stderr両方ともdataファイルに書かれているのか?
stderr
#