標準出力のディスクリプタを取得して、それが端末を参照しているかどうかを判定する。 使いどころは端末に出力する時と、ファイルにリダイレクト出力する時とで表示の仕方を変えたいとき。 例えば、以下のページの方法でターミナルの文字をカラーにできる。 C言語でターミナルで表示される文字をカラー表示させる だけど、これをファイルにリダイレクト出力するとエスケープシーケンスまで記録されてしまい、非常に見づらくなる。 そこで、標準出力がどこに出力されるかを判定し、カラーのON/OFFを切り替える処理を入れるようにしたい。 出力先が端末かどうかの判定は、Cだとこう書く。 #include <stdio.h> #include <unistd.h> int main() { int fd = fileno(stdout); int isTerminal = isatty(fd); printf("fd=%d,