【问题标题】:Does GUI program need Standard Streams?GUI 程序是否需要标准流?
【发布时间】:2010-02-26 08:18:50
【问题描述】:

我读到了standard streams。我的理解是没有 GUI 的老式程序也需要某种用户界面。因此操作系统为它们每个提供了一个控制台窗口,并且控制台窗口的输出/输入/错误流被映射到程序的标准输入/输出/错误流。因此这些程序被称为控制台应用程序。而且这个映射不能被程序员修改。

我想知道,如果我上面的理解是正确的,GUI程序是否也有这些标准流?我认为没有必要,因为 GUI 本身就是一个很好的用户界面。

【问题讨论】:

  • 老式的;哈哈。我想这使我成为一个老式的程序员。 :)
  • @guns - 我也是,以及其他编写服务器端应用程序的程序员
  • 迂腐注解 - GUI 不是用户界面,它是描述用户界面的术语。 Windows 是一个图形用户界面。 UNIX 上基于文本的菜单系统是一个 GUI。
  • 另一个迂腐的注解:stdout/stdin/stderr 可以重新映射到您喜欢的任何目的地——在 shell 中使用 > |或
  • 谢谢,伙计们。我为我的用词不当道歉。并感谢您的澄清。 8^)

标签: user-interface stream unix


【解决方案1】:

我引用了您链接到的文章的底部:

图形用户界面 (GUI) 很少使用标准 流。

一些 GUI 程序,主要是在 Unix 上, 仍然将调试信息写入 标准错误。

其他人可能会使用文件进行操作 标准,例如许多 Unix 媒体播放器这样做。

因此,从上面的引文中,您可以看到它们确实如此,尽管它们很少使用。

“而且这个映射不可能是 由程序员修改。”

这是不正确的 - 当然在 UNIX 上他们可以 - 不确定 Windows。例如,您可以关闭标准输出流并将其重定向到文件流以将输出写入文件。

【讨论】:

    【解决方案2】:
    • 这取决于您的操作系统。如果您运行“命令行”应用,有些会创建一个控制台,有些会将标准流连接到与启动程序的进程相同的流。
    • 您通常可以更改 stdout/in/err 流,将它们连接到运行它们的控制台以外的其他东西是很常见的,例如管道或文件。
    • GUI 程序通常也有 stdout/err/in 流。
    • GUI 程序很少使用这些流,可能除了在开发期间调试 printfs。
    • GUI 程序可能会将这些流重定向到 /dev/null 或类似的东西,只是丢弃写入其中的数据。

    【讨论】:

    • 谢谢,不。如果我理解正确。一个程序有标准输出/输入/错误,这些线程可以连接到控制台的输出/输入/错误。假设我不进行这样的连接,我可以直接写入程序的标准输出流吗?你能给我一些示例代码sn-p吗? C# 会更好...非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-11
    • 1970-01-01
    • 2015-05-31
    相关资源
    最近更新 更多