12

我正在编写一个命令行工具。这个工具可以做的一件事(当然不是唯一的)是从标准输入读取它的输入。当我注意到我不知道如何向它发出 EOF 信号时,我正在交互式地测试它(通过输入输入,而不是在其中输入文件)。

今晚我花了很多时间在谷歌上搜索,但没有发现任何帮助。我也搜索过。请随时向我指出一个重复的问题,但我保证,我做了尽职调查。

编辑:提及我在 Windows 上执行此操作可能会有所帮助(?)。所以我相信终端或多或少是一个品牌的MinGW?

4

4 回答 4

7

如果您尝试将 EOF 发送到 Windows 下的程序输入,Ctrl-Z这就是您要查找的内容。

于 2013-03-28T02:23:47.270 回答
3

它是 ^D,ASCII 传输结束字符。所有 GNU-userland 工具都将使用 POSIX 标准。

于 2013-03-28T02:45:47.363 回答
3

我在 Windows 上的 Git Bash 中使用的一个简单解决方法是对程序的输入进行分类。

例如,而不是运行

java my_package.Main

你可以跑

cat | java my_package.Main

这是因为 cat 程序是一个 linuxy 程序,可以接受来自终端的消息结束,而 java 可以通过管道正确接收消息结束命令。

所以在使用这个命令的时候,你可以在输入信息后输入Ctl-D,java程序会正确看到信息的结尾。

于 2021-12-09T16:17:51.240 回答
0

“^d ^d”对我有用。只需将此字符串添加到输入的末尾即可成功。

于 2020-01-10T17:40:49.603 回答