我对这三个文件的用途感到很困惑。如果我的理解正确的话,stdin 是程序写入其在进程中运行任务的请求的文件,stdout 是...
我对这三个文件的用途感到困惑。如果我的理解正确,它们 stdin
是程序写入其在进程中运行任务的请求的文件、 stdout
内核写入其输出以及请求它的进程从中访问信息的文件、以及 stderr
所有异常都输入到的文件。打开这些文件以检查这些是否确实发生,我发现似乎没有任何迹象表明如此!
我想知道的是这些文件到底有什么用途,用很少的技术术语来给出绝对简化的答案!
我认为人们说 stderr
只应用于错误消息是误导。
它还应该用于为运行命令的用户提供信息性消息,而不是为数据的任何潜在下游消费者提供信息性消息(例如,如果您运行链接多个命令的 shell 管道,您不希望出现诸如“获取 42424 项中的第 30 项”之类的信息性消息, stdout
因为它们会让消费者感到困惑,但您可能仍希望用户看到它们。
请参阅 此内容 以了解历史原因:
\'所有程序都将诊断信息放在标准输出上。当输出重定向到文件时,这总是会造成麻烦,但当输出发送到毫无防备的进程时,这种情况就变得无法容忍了。尽管如此,人们不愿意破坏标准输入标准输出模型的简单性,所以在 v6 中容忍了这种情况。此后不久,丹尼斯·里奇 (Dennis Ritchie) 通过引入标准错误文件解决了这一难题。但这还不够。有了管道,诊断信息可以来自同时运行的多个程序中的任何一个。诊断信息需要自我识别。\'