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

2024-02-05

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


翻译成 POSIX 语言,你的问题将是:“stdout 不是 TTY”,所以 *nix 上的答案可以通过以下方式获得!isatty(STDOUT_FILENO) https://stackoverflow.com/a/36258285/1026. The libc https://crates.io/crates/libccrate 可用于从 Rust 调用它。

在 Windows 上,这很复杂,所以你最好使用atty https://crates.io/crates/atty crate.

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有跨平台的方法来检查 stdout 是否正在通过管道传输到 Rust 中的另一个程序? 的相关文章

随机推荐