Fake output stream type
stream
Solution
Via `isatty`:
if (!isatty(fileno(stdout))
{
// redirected to a file or piped to a process
}
One way to trick is instead of doing redirect, start `script`. Now everything that goes to the 'tty' (including what you type into stdin and what is sent to output) is sent to a file called typescript.
Problem
By default certain programs format their output according to the type of the stream they write to. For example, the output of `ls` and `ls > file` looks differently. I'd like to know how this is achieved by a program. Additionally, is there a way by which we can trick such programs as if the output stream is a terminal where it actually is a file (especially when they don't have any options that affect output formatting)?