Я пытаюсь вызвать программу на C из Java и получить стандартный вывод. Вот мой код:
try {
ProcessBuilder pb = new ProcessBuilder("helloworld.exe");
pb.redirectErrorStream(true); // Merge std out and std err into same stream
program = pb.start(); // Start program
BufferedReader input = new BufferedReader(new InputStreamReader(program.getInputStream()));
line = input.readLine();
while (line != null) {
System.out.println(line);
line = input.readLine();
}
} catch (IOException e) {
e.printStackTrace();
}
Вот пример программы c:
int main(){
printf("Hello world\n");
}
Это прекрасно работает, когда программа, которую я выполняю (в нашем случае helloworld), не имеет getchar()
. Однако, если я добавлю getchar()
сразу после printf, я никогда ничего не получу из потока ввода. Есть идеи почему?
Спасибо