我正在编写一个命令行工具。这个工具可以做的一件事(当然不是唯一的)是从标准输入读取它的输入。当我注意到我不知道如何向它发出 EOF 信号时,我正在交互式地测试它(通过输入输入,而不是在其中输入文件)。
今晚我花了很多时间在谷歌上搜索,但没有发现任何帮助。我也搜索过。请随时向我指出一个重复的问题,但我保证,我做了尽职调查。
编辑:提及我在 Windows 上执行此操作可能会有所帮助(?)。所以我相信终端或多或少是一个品牌的MinGW?
如果您尝试将 EOF 发送到 Windows 下的程序输入,Ctrl-Z
这就是您要查找的内容。
它是 ^D,ASCII 传输结束字符。所有 GNU-userland 工具都将使用 POSIX 标准。
我在 Windows 上的 Git Bash 中使用的一个简单解决方法是对程序的输入进行分类。
例如,而不是运行
java my_package.Main
你可以跑
cat | java my_package.Main
这是因为 cat 程序是一个 linuxy 程序,可以接受来自终端的消息结束,而 java 可以通过管道正确接收消息结束命令。
所以在使用这个命令的时候,你可以在输入信息后输入Ctl-D,java程序会正确看到信息的结尾。
“^d ^d”对我有用。只需将此字符串添加到输入的末尾即可成功。