Linux программирование в примерах
Шрифт:
4.5. Произвольный доступ: перемещения внутри файла
До сих пор мы обсуждали последовательный ввод/вывод, при котором данные читаются или записываются с начала файла и продолжаются до его конца. Часто это все, что требуется программе. Однако, возможно осуществление произвольного ввода/вывода; т.е. читать данные из произвольного положения в файле без необходимости предварительного чтения всего, что находится перед этим местом.
Смещение дескриптора файла является положением внутри открытого файла, начиная с которого будет осуществляться следующая операция чтения или записи. Программа устанавливает смещение с помощью системного вызова
Тип
Дескриптор открытого файла.
Позиция, в которую нужно переместиться. Интерпретация этого значения зависит от параметра
Описывает положение в файле, относительно которого отсчитывается
Таблица 4.4. Значения
| Именованная константа | Значение | Комментарий |
|---|---|---|
| SEEK_SET | 0 | offset абсолютно, т.е. относительно начала файла |
| SEEK_CUR | 1 | offset относительно текущей позиции в файле |
| SEEK_END | 2 | offset относительно конца файла. |
Большое количество старого кода использует числовые значения, приведенные в табл. 4.4. Однако, любой новый код, который вы пишете, должен использовать символические имена, значение которых более ясно.
Смысл значений и их действие на положение в файле показаны на рис. 4.1. При условии, что файл содержит 3000 байтов и что перед каждым вызовом
Рис. 4.1. Смещения для
Отрицательные смещения относительно начала файла бессмысленны; они вызывают ошибку «недействительный параметр».
Возвращаемое значение является новым положением в файле. Поэтому, чтобы получить ваше текущее местоположение в файле, используйте
Буква
На системах с компилятором стандартного С, где
Одной интересной и важной особенностью
Следующая программа демонстрирует создание дыр. Она записывает три экземпляра
Заповедник гоблинов (сборник)
Фантастика:
научная фантастика
рейтинг книги
Паразиты
Проза:
современная проза
рейтинг книги
Древесный маг Орловского княжества
1. Орловское княжество
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
рейтинг книги
Товарищ "Чума" 2
2. Товарищ "Чума"
Фантастика:
городское фэнтези
попаданцы
альтернативная история
рейтинг книги
Курсант: назад в СССР
1. Курсант
Фантастика:
попаданцы
альтернативная история
рейтинг книги
Кодекс Крови. Книга VIII
8. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
рейтинг книги
Печать Пожирателя
1. Пожиратель
Фантастика:
попаданцы
аниме
сказочная фантастика
фэнтези
рейтинг книги
Лекарь
2. Травник
Фантастика:
фэнтези
рейтинг книги
Ее андалузский друг
1. София Бринкман
Детективы:
прочие детективы
рейтинг книги
Российские фантасмагории (сборник)
Юмор:
юмористическая проза
рейтинг книги