У меня проблема с перенаправлением программы c в класс Java. Это такая же проблема, какjava runtime redirect c выход программы
Java Runtime execute C language program get no output
Однако ответ не поможет мне, и я предполагаю, потому что я нахожусь в среде Windows. Я установил Cygwin и добавлю путь C: \ cygwin64 \ bin в мою среду для запуска моей c-программы. Моя программа C ниже и скомпилирован как a.exe:
#include<stdio.h>
int main() {
printf("Hello World");
return 0;
}
В моей Java программы:
Process p = Runtime.getRuntime().exec("C:\\a.exe");
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
while (in.ready()) {
System.out.println(in.readLine());
}
Этот код ничего не выводит. Однако, если я изменил
Процесс p = Runtime.getRuntime(). Exec ("C: \\ a.exe");
других команд Баша как
процесс р = Runtime.getRuntime() (Exec "Ls -la").
Это работает!
Я попытался использовать ProcessBuilder для перенаправления вывода, работа «a.exe» не работает, но работает «ls -la». Это код:
File output = new File("C:\\outputfile.txt");
ProcessBuilder pb = new ProcessBuilder("C:\\a.exe").inheritIO();
pb.redirectOutput(output);
Process p = pb.start();
Мои догадки связаны с Cgywin, но я понятия не имею, как это исправить. Кто-нибудь знает, что случилось? Заранее спасибо,