c# - 什么是标准输入和输出?
问题描述
我开始在国际象棋引擎上工作,我想遵循 uci 界面,其中使用平面文本完成通信。在规范中它说
所有通信都是通过标准输入和文本命令输出完成的
但我不知道这实际上意味着什么。
我正在考虑用 C# 编写一个 .net 标准库。我知道由于 uci 是跨平台的,我们不能用类似的语言交谈,Console.WriteLine
但 api 中的那条线对我来说意味着什么。
我是否必须Console.ReadLine()
为标准输入运行一个循环监听或类似的东西?我只是不明白。或者我应该编写一个将输入作为命令行参数并将字符串写入控制台的控制台应用程序?
完整的规范可以从这个链接下载:http: //download.shredderchess.com/div/uci.zip
解决方案
任何进程都有三个默认流:
- 标准输入 (stdin):这是所有终端或控制台应用程序的唯一输入流。当您调用 Console.ReadLine 或 Console.Read 时,将从该流中获取结果。
- 标准输出(stdout):当您在控制台单例类中调用与输出相关的命令时,所有数据都在此处。例如 WriteLine 或 theWrite 方法。颜色和哔声命令也将数据发送到那里。
- 标准错误 (stderr):这是一个专用流,用于将错误相关内容打印到控制台。这是专用的,因为某些应用程序和脚本解决方案想要隐藏这些消息。
您可以使用这些流与包含进程(例如控制台提示符)进行通信。命令行参数只能传递给程序的 main 方法。
推荐阅读
- passport.js - NestJS 8 自己的 AuthGuard 和 Passport:无法读取未定义的属性“身份验证”
- python - 试图在 numpy 数组上优化以下循环?最好的方法?(麻木或昏暗)
- php - StdClass 对象响应作为 PHP 中的变量
- python - 用于 Windows Python 的 Git 打印在 DEBUG/LOG 时也不起作用?
- php - Laravel 和 LocalStack 的最大执行时间
- sql - 2 sql 使用 UNION 查询 2 个不同的结果
- jmeter - Jmeter结果配置使用grafana
- typescript - 如何在 Typescript 中映射对象并从数组中获取不同的值
- php - 我需要将百分比添加到 woocommerce 运输价值
- javascript - 如何将firebase数据库中的数据放入输入文本字段?