Linux программирование в примерах
Шрифт:
Строки 27–30 гарантируют, что программа была вызвана правильно. Строки 32–37 открывают именованный файл и проверяют успешность открытия.
Вычисление числа элементов
Работа осуществляется в цикле (строки 41–55), который отыскивает смещение байтов, приведенное в каждой структуре (строка 42), а затем записывает всю структуру (строка 49):
Вот результаты запуска программы:
Случайно мы знаем, что каждый дисковый блок файла использует 4096 байтов. (Откуда мы это знаем, обсуждается в разделе 5 4.2 «Получение информации о файле». Пока примите это как данное.) Финальная команда bc указывает, что файлу размером 81944 байтов нужен 21 дисковый блок. Однако, опция -s команды ls, которая сообщает нам, сколько блоков использует файл на самом деле, показывает, что файл использует лишь 16 блоков! [48] Отсутствующие блоки в файле являются дырами. Это показано на рис. 4.2.
48
По крайней мере, три из этих блоков содержат данные, которые мы записали, другие для использования операционной системой при отслеживании размещения этих данных — Примеч. автора.
Рис. 4.2. Дыры в файле
ЗАМЕЧАНИЕ.
На практике сохранение данных путем использования двоичного ввода/вывода является решением, которое необходимо тщательно взвесить. Например, что если предположить, что вам нужно переместить данные на систему, использующую отличный порядок байтов для целых? Или другие форматы чисел с плавающей точкой? Или на систему с другими требованиями выравнивания? Игнорирование подобных вопросов может стать слишком дорогостоящим.
4.6. Создание файлов
Как было описано ранее,
4.6.1. Определение начальных прав доступа к файлу
Как пользователь GNU/Linux, вы знакомы с правами доступа к файлу, выдаваемыми командой '
Последний реанорец. Том IX
8. Высшая Речь
Фантастика:
фэнтези
попаданцы
аниме
рейтинг книги
Франклин Рузвельт. Человек и политик (с иллюстрациями)
Проза:
историческая проза
рейтинг книги
Олигарх-подкаблучник
Сыщицы-любительницы Кира и Леся
Детективы:
иронические детективы
рейтинг книги
Я не князь. Книга XIII
13. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
рейтинг книги
Тринадцатый
Фантастика:
фэнтези
рпг
рейтинг книги
Юся и эльф
Фантастика:
юмористическое фэнтези
детективная фантастика
рейтинг книги
Вылазка легиона
3. Легион стоит здесь
Фантастика:
фэнтези
эпическая фантастика
рейтинг книги
Пророки и поэты
Документальная литература:
публицистика
рейтинг книги