2016-07-06 3 views
1

У меня проблема с перенаправлением программы 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, но я понятия не имею, как это исправить. Кто-нибудь знает, что случилось? Заранее спасибо,

ответ

1

После того, как я провел весь этот день, я решил исправить это, перезапустив свой компьютер ..... и все работает ....

Смежные вопросы