stderr

stdinが標準入力のファイルポインタ、stdoutが標準出力のファイルポインタを表すように、stderrは標準エラー出力のファイルポインタを表す。

Man page of STDIN

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