2013-02-11 1 views
1

Я печатаю следующую команду на окнах:Перенаправление STDOUT и STDERR не в надлежащем порядке

C:\> abc.exe -t"param1" >> lofile.txt 2>&1 

Оба STDOUT и STDERR будут перенаправлены в выходной файл, но есть проблема.

Первоначально, когда начинается программа, есть 10 строк отпечатков STDERR, а затем около 100 строк STDOUT, а затем еще несколько строк STDERR. На консоли (подсказка cmd) порядок верен. Но когда я перенаправляю файл, используя указанную выше команду, порядок не соответствует отпечаткам.

Первый STDOUT печатается, а затем где-то между печатями STDERR. Почему последовательность не правильная?

ответ

0

Я думаю, что причина заключается в следующем:

Буферы для STDOUT и STDERR отдельно. После заполнения каждого буфера содержимое копируется в соответствующий файл.

Поскольку буфер STDERR заполняется, иногда из-за меньшего количества журналов, таким образом, он перемещается в файл на более позднем этапе. Вот почему журналы STDOUT видны в файле перед журналами STDERR, даже если программа начинается с нескольких строк отпечатков STDERR.

+0

Это похоже на ответ на вопрос ОП, и поэтому его следует принять. Я подозреваю, что * реальный * вопрос, хотя, что делать с этим! :-) Я знаю, что меня беспокоит. – bornfromanegg

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

  • Нет связанных вопросов^_^