Что и почему? – Дескрипторы файлов

Что такое дескриптор файла? Зачем они нужны?

  • Символ файловой системы на «+» (drwxr-x --- + 2 root root 4096 20 янв. 21:48 myusername)
  • Форматирование внешнего жесткого диска в совместимую с Linux файловую систему
  • Почему каталог / lost + found 16K вместо 4K байтов?
  • HP-UX 9: резервная файловая система с использованием tar
  • Наборы данных ZFS наследуют наследование
  • Как передать файл по протоколу Windows Share из научного Linux?
  • Что означает «quiesce» файловой системы?
  • Иногда я чувствую себя как каталог, иногда я чувствую себя как обычный файл
  • 2 Solutions collect form web for “Что и почему? – Дескрипторы файлов”

    Дескриптор файла – это число, которое представляет собой открытый файл в процессе. Это способ для программы запомнить, какой файл он манипулирует. Открытие файла ищет бесплатный номер и присваивает его файлу в таблице дескриптора файла процесса; закрытие файла удаляет запись из таблицы дескриптора процесса. Между файловым дескриптором n в процессе и файловым дескриптором с тем же номером в другом процессе нет никакой связи.

    «Каждый файл имеет три из них (stdin, stdout, stderr)» – это нонсенс. Процессы имеют файловые дескрипторы, а не файлы. Процессы могут и часто имеют более трех дескрипторов файлов и могут иметь меньше. Stdin, stdout и stderr – это имена файловых дескрипторов 0, 1 и 2, потому что они имеют обычное значение: stdin (стандартный ввод) – это то место, где программа должна читать пользовательский ввод (если он хочет), stdout (стандартный вывод) где программа должна писать данные, которые она производит (если она хочет), а stderr (стандартная ошибка) – для сообщений об ошибках. Stdin и stdout используются в программах, предназначенных для использования в командных линиях и особенно в трубопроводах; Я предлагаю вам прочитать, что подразумевается под подключением STDOUT и STDIN? и (более продвинутый). Как команда может иметь более одного выхода?

    Они представлены int

    Да, они нумеруются от нуля, что является обычным и простым средством учета уникальных предметов подобного рода. Вид как спортивные майки. Например, в команде может быть несколько вратарей, но вы знаете, какой из них играет в любой момент, потому что каждый член команды имеет уникальный номер. Это единственное значение.

    что такое дескриптор файла?

    Он относится к входному / выходному кабелю. Обычно они только один или другой, но они, возможно, оба.

    Каждый файл имеет три из них

    Как правило, каждый процесс имеет по крайней мере три из них, это особенность ОС OS * nix.

    Зачем они нужны?

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

    Почему я не могу сказать, что я хочу написать stdin или stdout?

    Очевидно, в зависимости от контекста. В C это (якобы) макросы, которые возвращаются к соответствующему дескриптору низкого уровня (посмотрите в stdio.h …). Если вы ошиблись в WRT оболочке, вы всегда можете, например:

     export stdin=0 export stdout=1 

    Хотя это, вероятно, не очень хорошая идея , так как вы рискуете попасть в глобальное пространство имен, возможно, прискорбно. Кроме того, stdin занимает больше времени, чем 0 ;).

    Linux и Unix - лучшая ОС в мире.