stdinが標準入力のファイルポインタ、stdoutが標準出力のファイルポインタを表すように、stderrは標準エラー出力のファイルポインタを表す。
perrorは標準エラー出力に出力する。
そして、stderrを指定すれば、fprintfでも標準エラー出力にメッセージを出力できる。
そのまま実行だと、標準出力と、標準エラー出力の違いがわからない。
$ vi stderr.c $ gcc stderr.c -o stderr $ ./stderr errno = 0 errno = 2 strerror(errno) = No such file or directory fopen error!: No such file or directory stderr string $ ./stderr > output.txt fopen error!: No such file or directory stderr string $ cat output.txt errno = 0 errno = 2 strerror(errno) = No such file or directory $
そこで、リダイレクトしてみると、標準エラー出力だけがコンソール出力になり、標準出力はファイル出力になる。
Sample/c/stderr/stderr/src/stderr at master · bg1bgst333/Sample · GitHub