제목이 길게 안되서 질문을 자세히 쓰자면
#include<stdio.h>
int main() {
int a, b;
printf("input a : ");
scanf("%d", &a);
printf("input b : ");
scanf("%d", &b);
printf("%d + %d = %d\n", a, b, a+b);
return 0;
}
이렇게 간단히 a와 b를 입력 받아 덧셈을 하는 c 프로그램이 있습니다.
이때 자바에서 이 프로그램을 Runtime.getRuntime().exec(); 를 이용해 실행을 시키려 하는데요.
이를 위해 아래와 같은 자바 프로그램을 만들었습니다.
Process cmd = Runtime.getRuntime().exec("c프로그램이름");
OutputStream stdin = cmd.getOutputStream();
InputStream stdout = cmd.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(stdout));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(stdin));
writer.write("4\n");
writer.flush();
writer.write("3\n");
writer.flush();
writer.close();
String line;
while((line = reader.readLine()) != null) {
System.out.println(line);
}
여기서 제가 reader를 통한 출력 결과는 아래와 같이 나오길 바라고 있습니다.
input a : 3
input b : 4
3 + 4 = 7
하지만 실제 출력은 아래와 같은 방식으로 나오죠.
input a : input b : 4 + 3 = 7
즉, writer에 넣어준 "4\n"와 "3\n"의 내용은 reader를 통해 나오지 않는 것 입니다.
이것이 해결 가능한 걸까요? 아니면 애당초 불가능한 것 일까요?