Я пытаюсь получить полную картину с файловыми дескрипторами. Скажем, у меня есть process1, который изначально имеет следующие файловые дескрипторы
_process1_
| |
| 0 stdin |
| 1 stdout |
| 2 stderr |
|__________|
Затем я закрываю файловый дескриптор 1:
close(1);
Файловый дескриптор 1 переводит (указывает) в структуру stdout FILE в таблице открытых файлов ядра .
С кодом выше дескриптор файла 1 удаляется из таблицы процесса, которая становится:
_process1_
| |
| 0 stdin |
| 2 stderr |
|__________|
Но что происходит в ядре? Имеет ли stdout
получить освобождаться структуру FILE? Как это возможно, если стандартный вывод является специальным файлом (монитором) и, вероятно, используется другими процессами? Как насчет структур FILE, которые являются обычными файлами (например, .txt)? Что, если такой файл используется другим процессом?