假输出流类型

4

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

2个回答

5

通过isatty

if (!isatty(fileno(stdout))
{
    // redirected to a file or piped to a process
}

一个欺骗的方法是,不要使用重定向,而是启动脚本。现在所有进入“tty”的内容(包括您键入的标准输入和发送到输出的内容)都被发送到一个名为typescript的文件中。


最好检查标准输出而不是标准输入。 - ThiefMaster

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接