Кто-то упомянул, что есть три разных файла, которые процесс всегда открывает. Что это значит? Что это за файлы?
Кто-то упомянул, что есть три разных файла, которые процесс всегда открывает. Что это значит? Что это за файлы?
Ответы:
Открываемые файлы не являются файлами на диске. Это потоки (псевдофайлы), stdin (0), stdout (1) и stderr (2). Вот соответствующая выдержка из стандарта POSIX :
Файл со связанной буферизацией называется потоком и объявляется указателем на определенный тип FILE. Функция fopen () должна создавать определенные описательные данные для потока и возвращать указатель для обозначения потока во всех дальнейших транзакциях. Обычно существует три открытых потока с постоянными указателями, объявленными в заголовке и связанными со стандартными открытыми файлами.
При запуске программы три потока должны быть предварительно определены и не должны открываться явно: стандартный ввод (для чтения обычного ввода), стандартный вывод (для записи обычного вывода) и стандартная ошибка (для записи диагностического вывода). При открытии стандартный поток ошибок не полностью буферизуется; стандартные входные и стандартные выходные потоки полностью буферизуются тогда и только тогда, когда можно определить, что поток не ссылается на интерактивное устройство.