Что такое дескриптор файла простыми словами
Файловый дескриптор
Ко всем потокам ввода-вывода (которые могут быть связаны как с файлами, так и с папками, сокетами и FIFO) можно получить доступ через так называемые файловые дескрипторы. Файловый дескриптор — это неотрицательное целое число. Когда создается новый поток ввода-вывода, ядро возвращает процессу, создавшему поток ввода-вывода, его файловый дескриптор.
По умолчанию Unix-оболочки связывают файловый дескриптор 0 с потоком стандартного ввода процесса (терминал), файловый дескриптор 1 — с потоком стандартного вывода (терминал), и файловый дескриптор 2 — с потоком диагностики (куда обычно выводятся сообщения об ошибках). Это соглашение соблюдается многими Unix-оболочками и многими приложениями — и ни в коем случае не является составной частью ядра.
Стандарт POSIX.1 заменил «магические числа» 0, 1, 2 символическими константами STDIN_FILENO, STDOUT_FILENO и STDERR_FILENO соответственно.
Файловые дескрипторы могут принимать значения от 0 до OPEN_MAX. Согласно POSIX.1, значение OPEN_MAX равно 19. В реальных ОС это значение может быть больше.
См. также
Полезное
Смотреть что такое «Файловый дескриптор» в других словарях:
Дескриптор — (англ. Descriptor): Дескриптор HTML элемент языка разметки гипертекста HTML. В разговорной речи дескрипторы называют тегами. Дескриптор развертывания XML файлы, которые описывают, как развернуть модули. Файловый дескриптор число… … Википедия
Epoll — (extended poll) API асинхронного ввода вывода, предоставляемого Linux для приложений. API позволяет приложениям осуществлять мониторинг нескольких открытых файловых дескрипторов (которые могут быть файлами, устройствами или сокетами, в том… … Википедия
Perl — Семантика: мультипарадигменный: императивный, объектно ориентированный, функциональный Тип исполнения: интерпретатор Появился в: 1987 Автор(ы) … Википедия
Перл (язык программирования) — Perl Семантика: мультипарадигменный: императивный, объектно ориентированный, функциональный Тип исполнения: интерпретатор Появился в: 1987 г. Автор(ы): Ларри Уолл … Википедия
Inotify — это подсистема ядра Linux, которая позволяет получать уведомления об изменениях в файловой системе. В основное ядро была включена начиная с 2.6.13, но может использоваться и с более ранними ядрами с помощью наложения патча. Основная сфера… … Википедия
inotify — это подсистема ядра Linux, которая позволяет получать уведомления об изменениях в файловой системе. В основное ядро была включена начиная с 2.6.13, но может использоваться и с более ранними ядрами с помощью наложения патча. Основная сфера… … Википедия
Перенаправление (UNIX) — У этого термина существуют и другие значения, см. Перенаправление. В информатике перенаправление это возможность присущая многим командным оболочкам, таким как командные оболочки UNIX, позволяющая перенаправлять стандартные потоки в… … Википедия
Перенаправление (программное обеспечение) — У этого термина существуют и другие значения, см. Перенаправление. В информатике перенаправление это возможность присущая многим командным оболочкам, таким как командные оболочки UNIX, позволяющая перенаправлять стандартные потоки в… … Википедия
Сокет (программный интерфейс) — У этого термина существуют и другие значения, см. Сокет. Сокеты (англ. socket углубление, гнездо, разъём) название программного интерфейса для обеспечения обмена данными между процессами. Процессы при таком обмене могут исполняться как на… … Википедия
Какие файловые дескрипторы, объяснил в простых терминах?
Делает процесс таблица содержит более одного дескриптора файла. Если да, то почему?
Простыми словами, когда вы открываете файл, операционная система создает запись для представления этого файла и хранить информацию о том, что открыт файл. Так что если есть 100 файлов, открытых в ОС то есть будет 100 записей в ОС (где-то в ядре). Эти записи представлены целыми числами, как (. 100, 101, 102. ). Эта запись номер описателя файла. Так что это просто целое число, которое однозначно представляет собой открытый файл в операционной системе. Если процесс открывает 10 файлов, то ваш процесс будет иметь 10 записей файловых дескрипторов.
Аналогичным образом, когда вы открываете сетевой сокет, это также представляется целым числом и называется дескриптором сокета. Я надеюсь, вы понимаете.
Услышать это от лошади’ы рот : APUE (Ричард Стивенс). К ядру, все открытые файлы, называются файловыми дескрипторами. Файловый дескриптор-это неотрицательное число.
Когда мы открываем существующий файл или создать новый файл, ядро возвращает файловый дескриптор процесса. Ядро поддерживает таблицу всех открытых файловых дескрипторов, которые используются. Выделение дескрипторов файлов, как правило, последовательных и они выделяются в файл в виде следующего свободного дескриптора файла из пула свободных файловых дескрипторов. Когда мы закрывает файл, файловый дескриптор освобождается и доступна для дальнейшего отвода. Увидеть это изображение для более подробной информации :
Другие ответы добавлен большой материал. Я просто добавить мои 2 цента.
По данным Википедии, мы знаем точно: файловый дескриптор-это неотрицательное целое число. Самое главное, я думаю, что отсутствует, будет сказать:
Файловые дескрипторы привязаны к ID процесса.
Проверьте этот код
В 4-ом столбце FD и на следующий столбец тип соответствует дескриптор файла и тип файла.
Некоторые значения для ФД может быть:
Но реальный дескриптор файла находится под:
Символ после номера я.е «на 1У» и представляет собой режим, в котором открывается файл. R для чтения, W-для записи, для чтения и записи.
Тип указывает тип файла. Некоторые из значений типы:
Но все файловые дескрипторы ЧР – специальный файл символ (или символ файл устройства)
Отметим также, что файл таблицы дескрипторов ядра отслеживает не такой, как в таблице файлов и таблице индексных дескрипторов. Это отдельные, как некоторые другие ответы объяснить.
Вы можете спросить себя, где эти файловые дескрипторы физически и, что хранится в каталоге/dev/оч/6` например
Просто вспомнить большинство Linux подобных ОС определить семь типов файлов:
Больше очков относительно дескриптор :
ФД’ы выделяются в последовательном порядке, т. е. минимально возможный нераспределенный целочисленное значение.
ФД’s для конкретного процесса можно увидеть в системах в/proc/$PID в/ФД `(на Unix основе).
Как дополнение к другим ответы, Unix и считает все как файловая система. Клавиатуре-это файл, который читается только с точки зрения ядра. Экран только для записи файл. Аналогично, папок, устройств ввода-вывода и т. д. также рассматриваются как файлы. Всякий раз, когда файл открыт, скажем, когда устройство драйверы[для файлов устройств] просит открыть(), либо процесс открывает файл user ядро выделяет дескриптор файла-целое число, определяющее доступ к этому файлу такой его только для чтения, записи и т. д. [для справки : https://en.wikipedia.org/wiki/Everything_is_a_file ]
Файловых дескрипторов (ФД) :
Дескриптор файла для стандартной ошибки 2. Если нет каких-либо директорию mydir, а затем вывод команды будет сохранить в файл файл ошибок.тхт Используя на «2>» мы повторно направить вывод ошибок в файл с именем «и файл ошибок.тхт» и Таким образом, вывод программы не загроможден с ошибками. я надеюсь, что вы получили ваш ответ.
Что такое файловые дескрипторы, объясненные простыми словами?
Что было бы более упрощенным описанием файловых дескрипторов по сравнению с Википедией? Зачем они нужны? Скажем, возьмем в качестве примера shell процессов и как это применимо к ним?
Содержит ли таблица процессов более одного файлового дескриптора? Если да, то почему?
12 ответов
Проще говоря, когда вы открываете файл, операционная система создает запись для представления этого файла и хранения информации об этом открытом файле. Таким образом, если в вашем OS открыто 100 файлов, то в OS будет 100 записей (где-то в kernel). Эти записи представлены целыми числами, такими как (. 100, 101, 102. ). Этот номер записи является дескриптором файла. Таким образом, это просто целое число, которое однозначно представляет открытый файл в операционной системе. Если ваш процесс открывает 10 файлов, то в таблице процессов будет 10 записей для файловых дескрипторов.
Аналогично, когда вы открываете сетевой сокет, он также представлен целым числом и называется дескриптором сокета. Надеюсь, вы понимаете.
Услышьте это из уст Лошади : APUE (Ричард Стивенс).
На kernel все открытые файлы ссылаются файловыми дескрипторами. Файловый дескриптор-это неотрицательное число.
Когда мы открываем существующий файл или создаем новый файл, kernel возвращает файловый дескриптор процессу. kernel поддерживает таблицу всех используемых дескрипторов открытых файлов. Выделение файловых дескрипторов обычно происходит последовательно, и они выделяются файлу в качестве следующего свободного файлового дескриптора из пула свободных файловых дескрипторов. Когда мы закрываем файл, дескриптор файла освобождается и доступен для дальнейшего выделения.
См. Это изображение для получения более подробной информации :
Я исследовал, как настроить свой linux (ubuntu) vps для rails. И почти все руководства, которые я читал, говорят мне установить passenger. Но ни один из гидов не объясняет, что это такое (по крайней мере, не в простых терминах). Поэтому мне было интересно, может ли кто-нибудь объяснить простыми.
Я использую реализацию Jython 2.51 Python для написания сценария, который многократно вызывает другой процесс через subprocess.Popen и использует PIPE для передачи stdout и stderr родительскому процессу и stdin дочернему процессу. После нескольких сотен итераций цикла у меня, похоже, закончились.
Другие ответы добавили отличные вещи. Я добавлю только свои 2 цента.
Файловые дескрипторы привязаны к процессу ID.
Скажем, возьмем в качестве примера shell процесса и как это применимо к нему?
Проверьте этот код
Столбец 4-th FD и самый следующий столбец TYPE соответствуют Файловому дескриптору и типу файлового дескриптора.
Некоторые значения для FD могут быть:
Но реальный файловый дескриптор находится под:
Символ после числа, т. е. «1u», представляет режим, в котором открывается файл. r для чтения, w для записи, u для чтения и записи.
TYPE указывает тип файла. Некоторые из значений TYPEs являются:
Но все файловые дескрипторы являются CHR – Символьный специальный файл (или файл символьного устройства)
Обратите также внимание, что таблица дескрипторов файлов, которую отслеживает kernel, не совпадает с таблицей файлов или таблицей индексов. Они разделены, как объяснялось в некоторых других ответах.
Вы можете спросить себя, где физически находятся эти файловые дескрипторы и что хранится, например, в /dev/pts/6
Просто чтобы вспомнить, что большинство Linux, как и OS, определяют семь типов файлов:
Дополнительные вопросы, касающиеся File Descriptor :
FD распределяются в последовательном порядке, что означает наименьшее возможное нераспределенное целочисленное значение.
FD для конкретного процесса можно увидеть в /proc/$pid/fd (в системах на основе Unix).
Файловые дескрипторы (FD) :
Файловый дескриптор для стандартной ошибки равен 2.
Если нет никакого каталога с именем mydir, то вывод команды будет сохранен в файл errorfile.txt
Используя «2>», мы перенаправляем вывод ошибки в файл с именем «errorfile.txt»
Таким образом, вывод программы не загроможден ошибками.
Надеюсь, вы получили ответ.
Дескрипторы файлов
В любой операционной системе запущены процессы (p), скажем, p1, p2, p3 и так далее. Каждый процесс обычно постоянно использует файлы.
Каждый процесс состоит из дерева процессов (или таблицы процессов, в другой формулировке).
Обычно операционные системы представляют каждый файл в каждом процессе числом (то есть в каждом процессе tree/table).
Любое такое число является файловым дескриптором.
Файловые дескрипторы обычно представляют собой целые числа (0, 1, 2, а не 0.5, 1.5, 2.5).
Учитывая, что мы часто описываем процессы как «таблицы процессов», и учитывая, что в таблицах есть строки (записи), мы можем сказать, что ячейка дескриптора файла в каждой записи используется для представления всей записи.
Аналогичным образом, когда вы открываете сетевой сокет, он имеет дескриптор сокета.
В некоторых операционных системах у вас могут закончиться файловые дескрипторы, но такой случай крайне редок, и средний пользователь компьютера не должен беспокоиться об этом.
Файловые дескрипторы могут быть глобальными (процесс A начинается, скажем, с 0 и заканчивается, скажем, с 1 ; Процесс B начинается, скажем, с 2 и заканчивается, скажем, с 3) и так далее, но, насколько я знаю, обычно в современных операционных системах файловые дескрипторы не являются глобальными и на самом деле зависят от процесса (процесс A начинается, скажем, с 0 и заканчивается, скажем, в 5, в то время как процесс B начинается с 0 и заканчивается, скажем, в 10).
Дополнение к прежде всего упрощенным ответам.
Если вы работаете с файлами в скрипте bash, лучше использовать файловый дескриптор.
Например: Если вы хотите читать и записывать из/в файл «test.txt»,, используйте дескриптор файла, как показано ниже:
Похожие вопросы:
Может ли кто-нибудь объяснить мне простыми словами, Что такое направленный ациклический граф? Я заглянул в Википедию, но на самом деле она не дает мне возможности увидеть ее использование в.
У меня была проблема с утечкой дескриптора (недостаточно квоты для обработки этой команды) в каком-то унаследованном коде C# winforms, поэтому я пошел и использовал инструмент дескриптора.
Поддерживаются ли файловые дескрипторы на windows? Зачем делать вещи seem to work в Perl с fds? Такие вещи, как fileno, dup и dup2, работали, но затем случайно внутри какой-то другой среды перестали.
Я исследовал, как настроить свой linux (ubuntu) vps для rails. И почти все руководства, которые я читал, говорят мне установить passenger. Но ни один из гидов не объясняет, что это такое (по крайней.
Я использую реализацию Jython 2.51 Python для написания сценария, который многократно вызывает другой процесс через subprocess.Popen и использует PIPE для передачи stdout и stderr родительскому.
Может ли кто-нибудь объяснить инъекцию зависимостей и контейнер IoC простыми и легкими словами, так как я новичок в laravel.
На самом деле это двухэтапный вопрос: Что такое файловый дескриптор? Я думал, что это самый фундаментальный способ представления открытого файла. Но поскольку dup2 может заставить два разных.
Предположим, что поток открывает некоторые файлы и т. д. и таким образом получает файловые дескрипторы. Гарантируется ли, что exit() из потока закрывает все файловые дескрипторы, открытые потоком?
Что такое файловые дескрипторы, объясненные простыми словами?
Что было бы более упрощенным описанием файловых дескрипторов по сравнению с Википедией? Зачем они нужны? Скажем, возьмем в качестве примера shell процессов и как это применимо к ним?
Содержит ли таблица процессов более одного файлового дескриптора? Если да, то почему?
12 ответов
Проще говоря, когда вы открываете файл, операционная система создает запись для представления этого файла и хранения информации об этом открытом файле. Таким образом, если в вашем OS открыто 100 файлов, то в OS будет 100 записей (где-то в kernel). Эти записи представлены целыми числами, такими как (. 100, 101, 102. ). Этот номер записи является дескриптором файла. Таким образом, это просто целое число, которое однозначно представляет открытый файл в операционной системе. Если ваш процесс открывает 10 файлов, то в таблице процессов будет 10 записей для файловых дескрипторов.
Аналогично, когда вы открываете сетевой сокет, он также представлен целым числом и называется дескриптором сокета. Надеюсь, вы понимаете.
Услышьте это из уст Лошади : APUE (Ричард Стивенс).
На kernel все открытые файлы ссылаются файловыми дескрипторами. Файловый дескриптор-это неотрицательное число.
Когда мы открываем существующий файл или создаем новый файл, kernel возвращает файловый дескриптор процессу. kernel поддерживает таблицу всех используемых дескрипторов открытых файлов. Выделение файловых дескрипторов обычно происходит последовательно, и они выделяются файлу в качестве следующего свободного файлового дескриптора из пула свободных файловых дескрипторов. Когда мы закрываем файл, дескриптор файла освобождается и доступен для дальнейшего выделения.
См. Это изображение для получения более подробной информации :
Я исследовал, как настроить свой linux (ubuntu) vps для rails. И почти все руководства, которые я читал, говорят мне установить passenger. Но ни один из гидов не объясняет, что это такое (по крайней мере, не в простых терминах). Поэтому мне было интересно, может ли кто-нибудь объяснить простыми.
Я использую реализацию Jython 2.51 Python для написания сценария, который многократно вызывает другой процесс через subprocess.Popen и использует PIPE для передачи stdout и stderr родительскому процессу и stdin дочернему процессу. После нескольких сотен итераций цикла у меня, похоже, закончились.
Другие ответы добавили отличные вещи. Я добавлю только свои 2 цента.
Файловые дескрипторы привязаны к процессу ID.
Скажем, возьмем в качестве примера shell процесса и как это применимо к нему?
Проверьте этот код
Столбец 4-th FD и самый следующий столбец TYPE соответствуют Файловому дескриптору и типу файлового дескриптора.
Некоторые значения для FD могут быть:
Но реальный файловый дескриптор находится под:
Символ после числа, т. е. «1u», представляет режим, в котором открывается файл. r для чтения, w для записи, u для чтения и записи.
TYPE указывает тип файла. Некоторые из значений TYPEs являются:
Но все файловые дескрипторы являются CHR – Символьный специальный файл (или файл символьного устройства)
Обратите также внимание, что таблица дескрипторов файлов, которую отслеживает kernel, не совпадает с таблицей файлов или таблицей индексов. Они разделены, как объяснялось в некоторых других ответах.
Вы можете спросить себя, где физически находятся эти файловые дескрипторы и что хранится, например, в /dev/pts/6
Просто чтобы вспомнить, что большинство Linux, как и OS, определяют семь типов файлов:
Дополнительные вопросы, касающиеся File Descriptor :
FD распределяются в последовательном порядке, что означает наименьшее возможное нераспределенное целочисленное значение.
FD для конкретного процесса можно увидеть в /proc/$pid/fd (в системах на основе Unix).
Файловые дескрипторы (FD) :
Файловый дескриптор для стандартной ошибки равен 2.
Если нет никакого каталога с именем mydir, то вывод команды будет сохранен в файл errorfile.txt
Используя «2>», мы перенаправляем вывод ошибки в файл с именем «errorfile.txt»
Таким образом, вывод программы не загроможден ошибками.
Надеюсь, вы получили ответ.
Дескрипторы файлов
В любой операционной системе запущены процессы (p), скажем, p1, p2, p3 и так далее. Каждый процесс обычно постоянно использует файлы.
Каждый процесс состоит из дерева процессов (или таблицы процессов, в другой формулировке).
Обычно операционные системы представляют каждый файл в каждом процессе числом (то есть в каждом процессе tree/table).
Любое такое число является файловым дескриптором.
Файловые дескрипторы обычно представляют собой целые числа (0, 1, 2, а не 0.5, 1.5, 2.5).
Учитывая, что мы часто описываем процессы как «таблицы процессов», и учитывая, что в таблицах есть строки (записи), мы можем сказать, что ячейка дескриптора файла в каждой записи используется для представления всей записи.
Аналогичным образом, когда вы открываете сетевой сокет, он имеет дескриптор сокета.
В некоторых операционных системах у вас могут закончиться файловые дескрипторы, но такой случай крайне редок, и средний пользователь компьютера не должен беспокоиться об этом.
Файловые дескрипторы могут быть глобальными (процесс A начинается, скажем, с 0 и заканчивается, скажем, с 1 ; Процесс B начинается, скажем, с 2 и заканчивается, скажем, с 3) и так далее, но, насколько я знаю, обычно в современных операционных системах файловые дескрипторы не являются глобальными и на самом деле зависят от процесса (процесс A начинается, скажем, с 0 и заканчивается, скажем, в 5, в то время как процесс B начинается с 0 и заканчивается, скажем, в 10).
Дополнение к прежде всего упрощенным ответам.
Если вы работаете с файлами в скрипте bash, лучше использовать файловый дескриптор.
Например: Если вы хотите читать и записывать из/в файл «test.txt»,, используйте дескриптор файла, как показано ниже:
Похожие вопросы:
Может ли кто-нибудь объяснить мне простыми словами, Что такое направленный ациклический граф? Я заглянул в Википедию, но на самом деле она не дает мне возможности увидеть ее использование в.
У меня была проблема с утечкой дескриптора (недостаточно квоты для обработки этой команды) в каком-то унаследованном коде C# winforms, поэтому я пошел и использовал инструмент дескриптора.
Поддерживаются ли файловые дескрипторы на windows? Зачем делать вещи seem to work в Perl с fds? Такие вещи, как fileno, dup и dup2, работали, но затем случайно внутри какой-то другой среды перестали.
Я исследовал, как настроить свой linux (ubuntu) vps для rails. И почти все руководства, которые я читал, говорят мне установить passenger. Но ни один из гидов не объясняет, что это такое (по крайней.
Я использую реализацию Jython 2.51 Python для написания сценария, который многократно вызывает другой процесс через subprocess.Popen и использует PIPE для передачи stdout и stderr родительскому.
Может ли кто-нибудь объяснить инъекцию зависимостей и контейнер IoC простыми и легкими словами, так как я новичок в laravel.
На самом деле это двухэтапный вопрос: Что такое файловый дескриптор? Я думал, что это самый фундаментальный способ представления открытого файла. Но поскольку dup2 может заставить два разных.
Предположим, что поток открывает некоторые файлы и т. д. и таким образом получает файловые дескрипторы. Гарантируется ли, что exit() из потока закрывает все файловые дескрипторы, открытые потоком?
Простыми словами, что такое файловые дескрипторы?
Что могло бы быть более упрощенным описанием файловых дескрипторов по сравнению с описанием в Википедии? Зачем они нужны? Скажем, возьмем в качестве примера процессы оболочки, и как это применимо?
Содержит ли таблица процессов более одного дескриптора файла. Если да, то почему?
11 ответов
Точно так же, когда вы открываете сетевой сокет, он также представляется целым числом и называется дескриптором сокета. Надеюсь, ты понимаешь.
Другие ответы добавили отличные вещи. Я добавлю только свои 2 цента.
Дескрипторы файлов привязаны к идентификатору процесса.
Скажем, возьмем в качестве примера процессы оболочки, и как это применимо?
Посмотрите этот код
4-й столбец FD и следующий за ним столбец TYPE соответствуют файловому дескриптору и типу файлового дескриптора.
Некоторые из значений FD могут быть:
Но настоящий файловый дескриптор находится под:
Символ после числа, например, «1u», представляет режим, в котором открывается файл. r для чтения, w для записи, u для чтения и записи.
TYPE указывает тип файла. Некоторые из значений TYPE:
Также обратите внимание, что таблица дескрипторов файлов, которую отслеживает ядро, не то же самое, что таблица файлов или таблица индексных дескрипторов. Это отдельные, как объяснялось в некоторых других ответах.
Вы можете спросить себя, где физически находятся эти файловые дескрипторы и что хранится, например, в /dev/pts/6
Напомним, что большинство операционных систем Linux определяют семь типов файлов:
Дополнительные сведения о File Descriptor :
FD распределяются в последовательном порядке, что означает наименьшее возможное нераспределенное целочисленное значение.
FD для конкретного процесса можно увидеть в /proc/$pid/fd (в системах на основе Unix).
Дескрипторы файлов
В любой операционной системе есть запущенные процессы (p), например p1, p2, p3 и т. Д. Каждый процесс обычно постоянно использует файлы.
Каждый процесс состоит из дерева процессов (или таблицы процессов, другими словами).
Обычно операционные системы представляют каждый файл в каждом процессе числом (то есть в каждом дереве / таблице процессов).
Любое такое число является дескриптором файла.
Дескрипторы файлов обычно представляют собой целые числа (0, 1, 2, а не 0,5, 1,5, 2,5).
Учитывая, что мы часто описываем процессы как «таблицы процессов», и учитывая, что таблицы имеют строки (записи), мы можем сказать, что ячейка дескриптора файла в каждой записи используется для представления всей записи.
Аналогичным образом, когда вы открываете сетевой сокет, он имеет дескриптор сокета.
В некоторых операционных системах у вас могут закончиться файловые дескрипторы, но такой случай крайне редок, и рядовому пользователю компьютера не стоит беспокоиться об этом.
Дескрипторы файлов могут быть глобальными (процесс A начинается, скажем, с 0 и заканчивается, например, с 1; процесс B начинается, скажем, с 2, и заканчивается, например, с 3) и так далее, но, насколько мне известно, обычно в современных операционных системах файл дескрипторы не являются глобальными и фактически зависят от процесса (процесс A начинается, скажем, с 0 и заканчивается, скажем, с 5, а процесс B начинается с 0 и заканчивается, скажем, с 10).
Дополнение к прежде всего упрощенным ответам.
Если вы работаете с файлами в сценарии bash, лучше использовать файловый дескриптор.
Например: если вы хотите читать и записывать из / в файл «test.txt», используйте дескриптор файла, как показано ниже:
Когда мы открываем существующий файл или создаем новый файл, ядро возвращает файловый дескриптор процессу. Ядро поддерживает таблицу всех открытых файловых дескрипторов, которые используются. Распределение файловых дескрипторов обычно происходит последовательно, и они назначаются файлу в качестве следующего свободного файлового дескриптора из пула свободных файловых дескрипторов. Когда мы закрываем файл, дескриптор файла освобождается и становится доступным для дальнейшего распределения.
Смотрите это изображение для более подробной информации: