Я использую утилиту java (antlr) на cygwin, java - это версия Windows, и я запускаю javac/java из cygwin bash.чтение до EOF в java на cygwin на windows-10
Следующий код Java используется для работы на Cygwin на win8.1, чтобы прочитать ряд цифр от стандартного ввода до EOF (адаптировано из reading input till EOF in java):
import java.util.Scanner;
public class Hello {
public static void main(String[] args) {
System.out.println("Hello, World");
Scanner in = new Scanner(System.in);
int num;
while (in.hasNextInt()) {
num = in.nextInt();
System.out.printf("%d\n",num);
}
}
}
Недавно я получил новый win10 ноутбук, установленный cygwin на нем, и он больше не работает. Когда я нажимаю Ctrl-D, программа продолжает ждать ввода, она не воспринимается как EOF.
После некоторой отладки (см. Комментарии в what is EOF in cygwin in windows 10), «stty -a» сообщает «eof =^D; susp =^Z», поэтому ожидается, что Ctrl-D будет рассматриваться как EOF. Следующий эквивалентный код в C++ работает так, как ожидалось, возможно потому, что этот код скомпилирован с самим cygwin и, следовательно, рассматривает^D как EOF.
#include <stdio.h>
int main() {
int i=0, status;
for(;;) {
printf("Enter a value %d:\n", i);
status = scanf("%d", &i);
if(status!=1) break;
}
}
Так что что-то кажется сломанным в комбинации cygwin-win10. Любые намеки, на что можно сломать и как это исправить?
Примечание: Я использую Java JDK-7u72
При использовании Cygwin, я использую установку Java сам по себе окон. Ниже приводятся данные об использовании:
В cygwin: javac Hello.java; Java Привет
Затем дайте входы, с последующим^D в новой строке (т.е. сразу после ввода Return
В окнах:. Я также попытался запустить ту же программу в окнах, просто чтобы убедиться, является ли это проблема windows или cygwin, поэтому я также запускаю: javac Hello.java; java Hello
Затем введите входы, а затем^D (или^Z) в новой строке (т.е. сразу после ввода Return) И программа заканчивается правильно, когда я нажимаю^D или^Z.
Как вы скомпилируете и запустите программу Java? Используете ли вы команду 'java' для ее запуска?Является ли команда 'java' исполняемой программой Cygwin? Что говорят 'type java' и' file $ (type -p Java) 'say? –
Нет Cygwin Java. Итак, это взаимодействие с Windows Java с cywin – matzeri
@Keith: см. Дополнительные примечания выше. Я использую установку java в самих окнах, включая CLASSPATH. «type java» дает «java hashed (/ cygdrive/c/sw/jdk7u72/bin/java)». Вторая команда дает: «/ cygdrive/c/sw/jdk7u72/bin/Java: PE32 + исполняемый (консольный) x86-64, для MS Windows» – R71