Как ядро знает, что файл закрыт
Каков механизм, с помощью которого Linux знает, что файл был закрыт? Я знаю, что такие команды, как INOTIFY, будут вызывать событие IN_CLOSE_WRITE при закрытии файла. Но как это работает? Что вызывает закрытие файла?
Точно так же, как ОС узнает, что файл был открыт, и где он регистрирует этот факт?
2 ответа
ОС (т.е. ядро) - это та, которая фактически открывает и закрывает файлы. Программа должна будет указывать ОС открывать / закрывать файлы от ее имени каждый раз, когда она хочет сделать это с помощью системных вызовов. ОС может просто отслеживать эти вызовы, которые проходят через себя.
Существует открытая таблица файлов, в которой перечислены все открытые потоки и места, на которые они указывают в памяти.
Это может помочь: http://www.cs.kent.edu/~walker/classes/os.f07/lectures/Walker-11.pdf