问题描述
我开始在国际象棋引擎上工作,我想遵循使用平面文字进行通讯的uci界面。在规范中说
所有通信都是通过标准输入和文本命令输出完成的
但我不知道这实际上意味着什么。
我正在考虑将C#编写为.net标准库。我了解,由于uci是跨平台的,因此我们无法使用Console.WriteLine
之类的语言进行交流,但是api中的这一行对我来说意味着什么。
我是否必须运行循环来监听Console.ReadLine()
或类似的标准输入内容?我就是不明白。还是应该编写一个将输入作为命令行参数并向控制台写入字符串的控制台应用程序?
可以从以下链接下载完整规范: http://download.shredderchess.com/div/uci.zip
解决方法
任何进程都有三个默认流:
- 标准输入(stdin):这是所有终端或控制台aps的唯一输入流。当您校准Console.ReadLine或Console.Read时,结果将从此流中获取。
- 标准输出(stdout):当您在控制台单例类中调用与输出相关的命令时,所有数据都将移至此处。例如,WriteLine或theWrite方法。 color和beep命令也将数据发送到那里。
- 标准错误(stderr):这是一个专用流,用于将与错误相关的内容打印到控制台。这是专用的,因为某些应用程序和脚本解决方案希望隐藏这些消息。
您可以使用这些流与包含进程(例如控制台提示符)进行通信。命令行参数只能传递给程序的main方法。