2

互联网上的许多文章都使用“标准输入/输出/错误流”术语,好像每个术语都与其他文章中使用的“标准输入/输出/错误设备”术语具有相同的含义。例如,许多文章说标准输出流默认是监视器,但可以重定向到文件、打印机或其他设备。

我们以标准输出为例:

  1. 标准输出流和标准输出设备有什么区别?如果有,它们之间的关系是什么?

    引用自GetStdHandle()的帮助页面,

    “进程的标准句柄可以通过调用 SetStdHandle来重定向,在这种情况下 GetStdHandle 返回重定向的句柄。”

  2. 究竟是重定向哪一个,是标准输出流还是标准输出设备?

  3. 每个流程都有自己的标准流吗?

4

1 回答 1

7

输出设备是可以写入数据的一些逻辑实体。

输出流是到输出设备的连接。

在一个进程中,您有一个标准输出流,它连接到您的标准输出设备。这意味着将数据写入标准输出流会将其输出到标准输出设备。当然,您实际上可以在流程开始后更改流绑定到哪个设备。

要回答您的最后一个问题,答案是肯定的,每个流程都有自己的标准流。这实际上映射到哪个设备取决于操作系统以及进程的启动方式。例如,在 Linux 或 Windows 中直接从控制台启动的任何进程都默认将其标准输出流链接到该控制台。但是,可以使用“>”来重定向此流,以引用硬件设备或文件,或者通过“管道”来重定向,这可用于使一系列程序将其标准输出流重定向到彼此。

例如: echo hi > example.txt将使用参数“hi”启动程序“echo”并将标准输出流设置为文件“example.txt”。

类似地,每个进程也有一个标准输入流和一个标准错误(输出)流。

于 2013-01-28T16:15:02.737 回答