게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
Java에서 Runtime.exec 로 C 프로그램의 scanf 처리법?
게시물ID : programmer_8663짧은주소 복사하기
작성자 : 티카슈프림
추천 : 0
조회수 : 552회
댓글수 : 2개
등록시간 : 2015/03/16 20:54:45
옵션
  • 본인삭제금지
제목이 길게 안되서 질문을 자세히 쓰자면

#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를 통해 나오지 않는 것 입니다.


이것이 해결 가능한 걸까요? 아니면 애당초 불가능한 것 일까요?


전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호