g:subtech:id:secondlife さんのところで、 パイプで受け取るとエスケープシーケンスが消去されてるよ!どうやってんだこれ。 というのがあったので、コメント欄に どうやって実現しているのかを書いていた時に、 すでに回答がされているのに気づいて、 俺は何をやっていたんだ、とショックを受けたのでココに書く。 実は、isatty(fd) という関数があり、 指定したファイルディスクリプタが端末かどうか調べる事が出来ます。 つまり、出力先が端末だったとき、エスケープシーケンスを付加し、 端末ではなく、別のプログラムの標準入力に渡されたときは、 エスケープシーケンスを除去しています。 以下は、 標準出力がターミナルだったときのみ "this is terminal" と出力します。 1 #include <stdio.h> 2 #include <unistd.h> 3 4 int