首页 > 解决方案 > 什么是标准输入和输出?

问题描述

我开始在国际象棋引擎上工作,我想遵循 uci 界面,其中使用平面文本完成通信。在规范中它说

所有通信都是通过标准输入和文本命令输出完成的

但我不知道这实际上意味着什么。

我正在考虑用 C# 编写一个 .net 标准库。我知道由于 uci 是跨平台的,我们不能用类似的语言交谈,Console.WriteLine但 api 中的那条线对我来说意味着什么。

我是否必须Console.ReadLine()为标准输入运行一个循环监听或类似的东西?我只是不明白。或者我应该编写一个将输入作为命令行参数并将字符串写入控制台的控制台应用程序?

完整的规范可以从这个链接下载:http: //download.shredderchess.com/div/uci.zip

标签: c#uci

解决方案


任何进程都有三个默认流:

  • 标准输入 (stdin):这是所有终端或控制台应用程序的唯一输入流。当您调用 Console.ReadLine 或 Console.Read 时,将从该流中获取结果。
  • 标准输出(stdout):当您在控制台单例类中调用与输出相关的命令时,所有数据都在此处。例如 WriteLine 或 theWrite 方法。颜色和哔声命令也将数据发送到那里。
  • 标准错误 (stderr):这是一个专用流,用于将错误相关内容打印到控制台。这是专用的,因为某些应用程序和脚本解决方案想要隐藏这些消息。

您可以使用这些流与包含进程(例如控制台提示符)进行通信。命令行参数只能传递给程序的 main 方法。


推荐阅读