Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Объединение потоков вывода и ошибок

410
10 мая 2007 года
Tavix
70 / / 20.05.2000
Доброго времени суток!
Есть программа на Java, назовам её proga, которая через exec() запускает некоторую другую прогу(start.exe). Далее, через getInputStream() и getErrorStream() определяются потоки вывода 1 и 2 программы start.exe. И все бы хорошо, но здесь возникает проблема:
start.exe может писать данные и в 1, и в 2. Сколько куда она напишет - я не знаю. Я хочу, получить то, что она напишет в эти потоки, причем в том же порядке, как они туда были записаны, т.е. получить текст программы start.exe, как будто та вывела данные на консоль.
В качестве start.exe использовалась такая прога:
#include <stdio.h>

int main(int argc, char *argv[])
{
for(int i=0; i<100; i++)
{
if((i%10)==1) fprintf(stderr,"Я - ошибка №%d\n", i);
printf("Итерация номер %i\n",i);
}
return 0;
}

При запуске из консоли получается то, что надо: через каждые 10 строк вылазеет ошибка. Хотелось бы получить тоже самое в proga.

Попробовал использовать SequenceInputStream(inputStream, errStream) для объединения потоков, но в нем данные идут последовательно: сначала с потока inputStream, затем с errStream... :(
Вроде задача не сложная, но никак не могу додумать..........
6.6K
11 мая 2007 года
Aoli
185 / / 22.01.2007
Цитата:

Попробовал использовать SequenceInputStream(inputStream, errStream) для объединения потоков, но в нем данные идут последовательно: сначала с потока inputStream, затем с errStream


Если ты сделаешь проц, который будет позволять не эмулировать многозадачность, а в реальном времени [strong]параллельно[/strong] обрабатывать хотя бы 2а потока, то, наверное, Нобеля дадут.

410
12 мая 2007 года
Tavix
70 / / 20.05.2000
Цитата: Aoli
Если ты сделаешь проц, который будет позволять не эмулировать многозадачность, а в реальном времени [strong]параллельно[/strong] обрабатывать хотя бы 2а потока, то, наверное, Нобеля дадут.



Ты когда запускаешь прожку из консоли, она тебе все выкидывает на консоль данные из обоих потоков, причем в том порядке, в котором эти данные в потоки были записаны. И ей сугубо фиолетово, сколько у тебя процессоров....

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог