2016-07-06 3 views
1

C 프로그램을 자바 런타임 클래스로 리디렉션 할 때 문제가 있습니다. 그것은자바 런타임 리디렉션 C 프로그램 출력

Java Runtime execute C language program get no output

그러나 대답은 나에게 도움이되지 않습니다 같은 비슷한 문제이고, I는 윈도우 환경에서이기 때문에 나는 추측하고있다. Cygwin을 설치하고 C : \ cygwin64 \ bin 경로를 내 환경에 추가하여 내 C 프로그램을 실행합니다. 내 C 프로그램은 a.exe를 다음과 같이 컴파일입니다 : 내 자바 프로그램에서

#include<stdio.h> 
int main() { 
    printf("Hello World"); 
    return 0; 
} 

:

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"); .

프로세스 p = Runtime.getRuntime() 간부 ("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

하루 종일이 연구를 해본 후 마침내 컴퓨터를 다시 시작하여 문제를 해결했습니다 ..... 모든 것이 작동합니다 ...