Объединение потоков вывода и ошибок
Есть программа на 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... :(
Вроде задача не сложная, но никак не могу додумать..........
Цитата:
Попробовал использовать SequenceInputStream(inputStream, errStream) для объединения потоков, но в нем данные идут последовательно: сначала с потока inputStream, затем с errStream
Если ты сделаешь проц, который будет позволять не эмулировать многозадачность, а в реальном времени [strong]параллельно[/strong] обрабатывать хотя бы 2а потока, то, наверное, Нобеля дадут.
Цитата: Aoli
Если ты сделаешь проц, который будет позволять не эмулировать многозадачность, а в реальном времени [strong]параллельно[/strong] обрабатывать хотя бы 2а потока, то, наверное, Нобеля дадут.
Ты когда запускаешь прожку из консоли, она тебе все выкидывает на консоль данные из обоих потоков, причем в том порядке, в котором эти данные в потоки были записаны. И ей сугубо фиолетово, сколько у тебя процессоров....