захват сообщения об ошибке и отображение в консоли (IDE)

Я запускаю программу на С++ (makefile) в качестве фонового процесса, используя Processbuilder из моей java-программы. Я фиксирую значения, отображаемые в командной строке cmd, с помощью .getInputStream и отображаю в своей консоли (IDE).

    input = new BufferedReader(new InputStreamReader(p.getInputStream()));

            String line;
    try {
       while((line=input.readLine()) != null) {

            System.out.println(line);

Это хорошо работает. Предположим, если я сделаю какую-то ошибку в одном из моих файлов С++, и когда я попытаюсь запустить make-файл, он не перехватит сообщение об ошибке. При использовании «cmd.exe», «start» я могу просмотреть ошибку в командной строке cmd, но она не отображается в консоли (IDE).

Могу ли я узнать, что я должен сделать, чтобы отобразить сообщение об ошибке.

1) System.err и printstream могут быть решением этой проблемы? если это так, не могли бы вы, пожалуйста, покажите мне образец кода. заранее спасибо


person sreram    schedule 30.03.2013    source источник
comment
Использовали ли вы ProcessBuilder#redirectError?   -  person MadProgrammer    schedule 30.03.2013
comment
Спасибо MadProgrammer.   -  person sreram    schedule 30.03.2013
comment
если это ошибка, я могу получить ее через redirectError, как вы упомянули. Я могу получить вывод через .getInputStream. Если я запускаю exe в фоновом режиме, его обработка не фиксируется ни потоком ошибок, ни потоком ввода. Как я могу это получить?   -  person sreram    schedule 30.03.2013
comment
Если вы используете redirectError, вывод ошибки будет перенаправлен в InputStream. Вместо использования BufferedReader#readLine попробуйте прочитать каждый символ по отдельности.   -  person MadProgrammer    schedule 30.03.2013
comment
Попробуйте взглянуть на этот пример   -  person MadProgrammer    schedule 30.03.2013


Ответы (1)


У процесса есть .getErrorStream(), или вы можете использовать .redirectErrorStream() ProcessBuilder, как указано в комментарии MadProgrammer и этом вопросе SO: Java Процесс с потоком ввода/вывода

person SeKa    schedule 30.03.2013
comment
@sreram, если вам понравился чей-то ответ или он решил вашу проблему, вы должны проголосовать за него и/или отметить его как лучший ответ. Замечания не применяются, но вы все равно можете от них отказаться. - person Cardinal System; 26.04.2017