"standard output stream"和"standard output device"有什么区别?

What is the difference between "standard output stream" and "standard output device"?

本文关键字:output standard 区别 什么 stream device      更新时间:2023-10-16

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

让我们以标准输出为例:

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

    引自 GetStdHandle() 的帮助页面,

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

  2. 哪一个实际上是重定向的,标准输出流还是标准输出设备?

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

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

输出

流是与输出设备的连接。

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

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

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

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