Разработка приложений в среде Linux. Второе издание
Шрифт:
11.2.6. Сокращение файлов
Хотя обычные файлы автоматически растут при записи данных в их конец, у системы нет способа автоматически усекать файлы, когда данные в конце не нужны. К тому же, как система может узнать, что данные стали излишними? Это находится в компетенции процесса — извещать систему о том, когда файл можно сократить до определенной точки.
Размер
Если
11.2.7. Синхронизация файлов
Когда программа пишет данные в файл, обычно они сохраняются в кэше ядра до тех пор, пока оно не выполнит запись на физический носитель (такой как жесткий диск), но ядро возвращает управление программе сразу после того, как данные скопируются в кэш. Это обеспечивает значительный рост производительности, так как позволяет ядру определять порядок записи на диск и объединять несколько записей в одну блочную операцию. Однако в случае системного сбоя у такой технологии есть два существенных недостатка, которые могут оказаться важными. Например, приложение, которое предполагает, что данные сохранены в базе данных прежде, чем был сохранен индекс для этих данных, может не справиться со сбоем, явившимся результатом того, что индекс был просто обновлен.
Есть несколько механизмов, которые может использовать приложение, чтобы дождаться записи данных на физический носитель. Флаг
Оба системных вызова приостанавливают приложение до тех пор, пока в файл
11.2.8. Прочие операции
Файловая модель Linux достаточно хорошо поддерживает стандартизацию большинства файловых операций через обобщенные функции наподобие
Все эти разнообразные операции доступны через единственный системный вызов —
Хотя часто он применяется следующим образом:
Всякий раз когда используется
11.3. Запрос и изменение информации inode
11.3.1. Поиск информации inode
В начале этой главы информационный узел файла (inode) был представлен как структура данных, которая отслеживает информацию о файле, независимо от представления ее для процесса. Например,
Первая версия,
Таблица 11.3. Члены структуры
Тип | Поле | Описание |
---|---|---|
dev_t | st_dev | Номер устройства, на котором находится файл. |
ino_t | st_ino | Номер файлового on-disk inode. Каждый файл имеет номер on-disk inode, уникальный в пределах устройства, на котором он расположен. То есть пара ( st_dev , st_ino ) представляет собой уникальный идентификатор файла. |
mode_t | st mode | Режим файла. Сюда включена информация о правах доступа и типе файла. |
nlink_t | st_nlink | Количество путевых имен, ссылающихся на данный inode. Сюда не включаются символические ссылки, потому что они ссылаются на другие имена, а не на inode. |
uid_t | st_uid | Идентификатор пользователя, владеющего файлом. |
gid_t | st_gid | Идентификатор группы, владеющей файлом. |
dev_t | st_rdev | Если файл — символьное или блочное устройство, это задает старший (major) и младший (minor) номера файла. Чтобы получить информацию о членах и макросах, которые манипулируют этим значением, обратитесь к обсуждению mknod далее в этой главе. |
off_t | st size | Размер файла в байтах. Это определено только для обычных файлов. |
unsigned long | st_blksize | Размер блока в файловой системе, хранящей файл. |
unsigned long | st_blocks | Количество блоков, выделенных файлу. Обычно st_blksize * st_blocks — это немного больше, чем st_size , потому что некоторое пространство в конечном блоке не используется. Однако для файлов с "дырками" st_blksize * st_blocks может быть заметно меньше, чем st_size . |
time_t | st_atime | Время последнего доступа к файлу. Обновляется при каждом открытии файла или модификации его inode. |
time_t | st_mtime | Время последней модификации файла. Обновляется при изменении данных файла. |
time_t | st_ctime | Последнее время изменения файла или его inode, включая владельца, группу, счетчик связей и так далее. |
Стеллар. Трибут
2. Стеллар
Фантастика:
боевая фантастика
рпг
рейтинг книги
Его огонь горит для меня. Том 2
2. Мир Карастели
Фантастика:
юмористическая фантастика
рейтинг книги
На границе империй. Том 9. Часть 4
17. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
рейтинг книги
Наследник
1. Рюрикова кровь
Фантастика:
научная фантастика
попаданцы
альтернативная история
рейтинг книги
