警告应该发送到 stdout 还是 stderr?

Should a warning go to stdout or stderr?

警告消息应该发送到 stdout 还是 stderr?

这是否在某处定义(例如在 Posix 中)?

此问题与特定的编程语言或机器体系结构无关。

视情况而定。例如,假设您正在实施一个 sort 程序。您的程序从标准输入读取输入并写入标准输出。假设您添加了一个选项来执行 "numeric" 排序而不是字典排序(细节并不重要)。假设您想要在输入中实际找不到任何数字时写一条警告消息。您的排序仍然有效,但它可能不是用户想要的。在这种情况下,您可能希望将警告消息写入 stderr,因为标准输出是为 实际 排序数据保留的。

另一方面,如果您正在编写程序来联系 Web 服务 API,请阅读一些内容 JSON,提取一些信息,然后将信息写入数据库,那么也许将警告消息写入标准输出是完全可以接受的。

因此,这取决于您的应用程序是什么以及它如何使用标准输出。没有"standard".