如何向EOF发出信号以关闭Windows上Git Bash终端下的stdin?Ctrl-D 不起作用



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

今晚我花了大量的时间在谷歌上搜索,但没有发现任何有用的东西。我也搜索了SO。如果有重复的问题,请随时告诉我,但我保证我做了尽职调查。

编辑:这可能是有帮助的(?)提到我在Windows上做这个。所以我相信终端或多或少是一个品牌的MinGW?

如果你想在Windows下发送EOF到一个程序的输入,Ctrl-Z就是你要找的。

我在Windows上的Git Bash中使用的一个简单的解决方案是将输入输入到程序中。

。,而不是运行

java my_package.Main

你可以运行

cat | java my_package.Main

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

所以当使用这个命令时,你可以在输入消息后输入ctrl - d, java程序会正确地看到消息的结尾。

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

"^d ^d"适合我。只要将这个字符串添加到输入的末尾,它就成功了。

在登录命令前加上winpty以在Windows中打开TTY:

winpty docker login -u <username>

最新更新