Поделиться через


Перенаправление сообщений об ошибках из командной строки: STDERR/STDOUT

В этой статье описывается перенаправление сообщений об ошибках из командной строки.

Исходная версия продукта: Visual C++
Исходный номер базы знаний: 110930

Итоги

При перенаправлении выходных данных из приложения с помощью символа > сообщения об ошибках по-прежнему печатаются на экране. Это связано с тем, что сообщения об ошибках часто отправляются в поток стандартных ошибок вместо потока "Стандартный исходящий".

Выходные данные из приложения консоли (командной строки) часто отправляются в два отдельных потока. Регулярные выходные данные отправляются в standard Out (STDOUT) и сообщения об ошибках отправляются в стандартную ошибку (STDERR). При перенаправлении выходных данных консоли с помощью символа > вы будете перенаправлены только STDOUT. Чтобы перенаправить STDERR, необходимо указать 2> для символа перенаправления. При этом выбирается второй выходной поток, который является STDERR.

Пример

dir file.xxx Команда (где file.xxx не существует) отобразит следующие выходные данные:

Том в диске F — Candy Cane Volume Serial Number is 34EC-0876
Файл не найден

Если вы перенаправляете выходные данные на устройство NUL с помощью dir file.xxx > nul, вы по-прежнему увидите сообщение об ошибке:

Файл не найден

Чтобы перенаправить сообщение об ошибке в NUL, используйте следующую команду:

dir file.xxx 2> nul

Вы также можете перенаправить выходные данные в одно место и ошибки в другое.

dir file.xxx > output.msg 2> output.err

Ошибки и стандартные выходные данные можно распечатать в один файл с помощью &1 команды, чтобы перенаправить выходные данные stDERR в STDOUT, а затем отправить выходные данные из STDOUT в файл:

dir file.xxx 1> output.msg 2>&1