Determine whether process output is being redirected in C/C++

c, shell, stdout

Solution

You can use isatty on linux. This function is obviously not standard C, since - for example - on many platforms you can't redirect the output to a file.

Problem

I'm writing command line utility for Linux. If the output (stdout) is going to a shell it would be nice to print some escapes to colorize output. But if the output is being redirected those bash escapes shouldn't be print, or the content might break parsers that rely on that output. There are several programs that do this (suck as `ack`) but the ones I found were written in Perl and I couldn't find out how they did it. I wanted to use C/C++ to write my utility.

Original source

Related problems