首页 > 解决方案 > 是否有一种跨平台的方法来检查 stdout 是否正在通过管道传输到 Rust 中的另一个程序中?

问题描述

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

标签: rustpipetty

解决方案


翻译成 POSIX 语言,你的问题是:“is stdout not a TTY”,所以 *nix 上的答案可以通过!isatty(STDOUT_FILENO). libc crate 可用于从 Rust 调用它。

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

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


推荐阅读