Interested Article - Стандартные потоки

Стандартные потоки ввода-вывода в системах типа UNIX (и некоторых других) — потоки процесса , имеющие номер (дескриптор), зарезервированный для выполнения некоторых «стандартных» функций. Как правило (хотя и не обязательно), эти дескрипторы открыты уже в момент запуска задачи ( исполняемого файла ).

Стандартный ввод

Поток номер 0 (stdin) зарезервирован для чтения команд пользователя или входных данных.

При интерактивном запуске программы по умолчанию нацелен на чтение со стандартного устройства ввода ( клавиатуры ). Командная оболочка UNIX (и оболочки других систем) позволяют изменять цель этого потока с помощью символа « < ». Системные программы ( демоны и т. п.), как правило, не пользуются этим потоком.

Стандартный вывод

Поток номер 1 (stdout) зарезервирован для вывода данных, как правило (хотя и не обязательно) текстовых .

При интерактивном запуске программы по умолчанию нацелен на запись на устройство отображения ( монитор ). Командная оболочка UNIX (и оболочки других систем) позволяют перенаправить этот поток с помощью символа « > ». Средства для выполнения программ в фоновом режиме (например, nohup ) обычно переназначают этот поток в файл .

Стандартный вывод ошибок

Поток номер 2 (stderr) зарезервирован для вывода диагностических и отладочных сообщений в текстовом виде.

Чаще всего цель этого потока совпадает с stdout, однако, в отличие от него, цель потока stderr не меняется при « > » и создании конвейеров (« | »). То есть, отладочные сообщения процесса, вывод которого перенаправлен, всё равно попадут пользователю. Командная оболочка UNIX позволяет изменять цель этого потока с помощью конструкции « 2> ». Например, для подавления вывода этого потока нередко пишется «2> /dev/null ».

POSIX -функция обработки ошибок perror используется в языках программирования Си и C++ для вывода сообщения об ошибке в stderr на основе номера последней ошибки, хранящейся в errno .

Другие

В DOS можно было использовать также номер 4 (stdprn) и 5 (stdaux) .

См. также

Примечания

  1. Ray Duncan. Advanced MS-DOS Programming. — 2nd edition. — Microsoft Press, 1988. — P. 309. — ISBN 1-55615-157-8 .

Дополнительная информация

  • — подробно об использовании потоков ввода-вывода в UNIX/Linux
Источник —

Same as Стандартные потоки