2014-01-10 4 views
1

Я пытаюсь запустить консольный процесс, в который я могу впоследствии написать дальнейшие команды. Код у меня есть этоКак запустить процесс из приложения Java?

ExecutorService service = Executors.newFixedThreadPool(2); 
    Process process = Runtime.getRuntime().exec("cmd.exe"); 
    service.submit(new StreamReader(process.getInputStream(), System.out, "OUTPUT")); 
    service.submit(new StreamReader(process.getErrorStream(), System.err, "OUTPUT")); 
    //process.getOutputStream().close(); 
    PrintWriter writer = new PrintWriter(process.getOutputStream()); 

    Scanner sc = new Scanner(System.in); 

    while(true){ 
     writer.println(sc.nextLine()); 
    } 
} 

читатель поток просто читает InputStream и записывает его с помощью PrintWriter. Я вижу только вывод cmd.exe, если я закрою OutputStream. Что мне здесь не так, и как я могу заставить пользователя предоставить дополнительные команды (если я закрываю OutputStream, то на консоль не выводятся дальнейшие команды).

ответ

2

Вы должны очистить() PrintWriter в StreamReader.

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