有没有一种跨平台的方法来检查 stdout 是否被管道传输到 Rust 中的另一个程序?

Is there a cross-platform way to check if stdout is being piped into another program in Rust?

当输出通过管道传输到终端以外的其他地方时,我想禁用颜色。

翻译成 POSIX 语言,你的问题将是:“stdout 不是 TTY”,所以 *nix 上的答案可以通过 . The libc crate 获得,可以用来调用它来自 Rust。

在 Windows 上,它很复杂,所以你最好使用 atty 箱子。

[edit] 您也可以在 Linux 上使用 atty crate,使其成为跨平台程序的便捷解决方案。