Почему STDERR перенаправляется на STDOUT - PullRequest
7 голосов
/ 31 декабря 2010

Я заметил, что у нас есть в основном 3 файловых потока. Они STDIN, STDOUT и STDERR .. Мой вопрос: почему STDERR перенаправляется на STDOUT?

Ответы [ 3 ]

35 голосов
/ 31 декабря 2010

stderr не перенаправляется на stdout.Оба потока подключены только к одному и тому же устройству (текущему экрану или терминалу) по умолчанию.

Вы можете перенаправить их в разные файлы:

$ command > stdout.log 2> stderr.log

Для фактического перенаправления stderrна stdout, вы должны выдать:

$ command 2>&1
5 голосов
/ 31 декабря 2010

Это не так; бывает так, что и stdout, и stderr обычно отображаются в один и тот же поток вывода (обычно консоль). Например, если вы перенаправите стандартный вывод в файл, вы обнаружите, что стандартный вывод направлен на консоль.

Важным моментом является то, что они независимо перенаправляются.

0 голосов
/ 31 декабря 2010

Как и stdout, stderr обычно направляется на устройство вывода стандартной консоли (как правило, на экран).Это означает, что stderr не перенаправляется на stdout, но имеет общий файловый дескриптор.Можно перенаправить stderr в другое место назначения из программы, используя функцию freopen .

...