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과 관련되어 있지만이 문제를 해결할 방법이 없습니다. 누가 잘못되었는지 알아? 미리 감사드립니다.