【发布时间】:2017-09-02 19:08:29
【问题描述】:
我想在循环中读取半径并在用户发送EOF (Ctrl+D / Ctrl+ Z)。
我不熟悉 Linux 和这种组合。
谁能解释一下EOF和这些命令的作用?我应该如何实现它们?
【问题讨论】:
-
你想怎么读?
read()?readLine()?Scanner?
我想在循环中读取半径并在用户发送EOF (Ctrl+D / Ctrl+ Z)。
我不熟悉 Linux 和这种组合。
谁能解释一下EOF和这些命令的作用?我应该如何实现它们?
【问题讨论】:
read()? readLine()? Scanner?
从您的程序的角度来看,EOF 是您调用read 系统调用时的事件,通常由库执行,它返回的字节数少于请求的字节数。它没有什么特别之处。从 STDIN 或文件中读取行时也是如此。没有更多的行,你退出你的主循环。
当您点击 Ctrl+d 时,Linux VTE(虚拟终端)设备会为您的程序安排这个。
如何在 Java 中做到这一点,我不知道。我什至看不懂Java。我从来没有在样板的大海捞针中找到意义之针。 :)
【讨论】:
read() 在 Java 中返回 -1。
man 2 read,然后回来解释它如何返回 EOF。我很好奇。