假输出流类型

Jee*_*enu 4 stream

默认情况下,某些程序根据它们写入的流的类型格式化其输出.例如,输出lsls > file看起来不同.我想知道一个程序是如何实现的.另外,有没有一种方法可以欺骗这些程序,就好像输出流是一个实际上是文件的终端(特别是当它们没有任何影响输出格式的选项时)?

R S*_*hko 5

通过isatty:

if (!isatty(fileno(stdout))
{
    // redirected to a file or piped to a process
}
Run Code Online (Sandbox Code Playgroud)

欺骗的一种方法是开始,而不是重定向script.现在,所有转到'tty'的内容(包括你输入stdin的内容以及发送到输出的内容)都被发送到一个名为typescript的文件.