Ввод и вывод

Любая программа – это автомат, предназначенный для обработки данных: получая на входе одну информацию, они в результате работы выдают другую. Хотя входящая и/или выходящая информация может быть и нулевой, т. е. попросту отсутствовать. Те данные, которые передаются программе для обработки – это ее ввод, то, что она выдает в результате работы – вывод. Организация ввода и вывода для каждой программы – это задача ОС.

Для того чтобы записать данные в файлили прочитать их оттуда, процессу необходимо сначала открытьэтот файл (при открытии на запись, возможно, придется предварительно создать его). При этом процесс получает дескриптор (описатель) открытого файла – уникальное для этого процесса число, которое он и будет использовать во всех операциях записи. Первый открытый файл получит дескриптор 0, второй – 1 и так далее. Закончив работу с файлом, процесс закрываетего, при этом дескриптор освобождается и может быть использован повторно. Если процесс завершается, не закрыв файлы, за него это делает система. Строго говоря, только в операции открытия дескриптора указывается, какой именно файл будет задействован. В качестве «файла» используются и обычные файлы, и файлы устройств (чаще всего – терминалы), и каналы, описанные далее. Дальнейшие операции – чтение, запись и закрытие – работают с дескриптором, как с потоком данных, а куда именно ведет этот поток, неважно.

Каждый процесс Unix получает при старте три«файла», открытых для него системой.

Первый из них (с дескриптором 0) открыт на чтение, это стандартный ввод процесса. Именно со стандартным вводом работают все операции чтения, если в них не указан дескриптор файла.

Второй «файл» (с дескриптором 1) открыт на запись, это стандартный вывод процесса. С ним работают все операции записи, если дескриптор файла не указан в них явно.

Наконец, третий поток данных (с дескриптором 2) предназначается для вывода диагностических сообщений, он называется стандартный вывод ошибок.

Поскольку эти три дескриптора уже открыты к моменту запуска процесса, первый файл, открытый самимпроцессом, будет, скорее всего, иметь дескриптор 3.

Стандартный вывод (standard output, STDOUT) – это поток данных, открываемый системой для каждого процесса в момент его запуска и предназначенный для данных, выводимых процессом.

Стандартный ввод (standard input, STDIN) – это поток данных, открываемый системой для каждого процесса в момент его запуска и предназначенный для ввода данных.

Стандартный вывод ошибок (standard error, STDERR) – это поток данных, открываемый системой для каждого процесса в момент его запуска и предназначенный для диагностических сообщений, выводимых процессом.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: