В чем причина того, что функция lseek возвращает дескрипторы файлов как длинные целые числа?

Согласно книге « Расширенное программирование в среде Unix» :

«Символ l в названии lseek означает« длинное целое число ». До введения типа данных off_t аргумент offset и возвращаемое значение были длинными целыми числами. Lseek был введен с версией 7, когда к C. добавлены длинные целые числа. (Аналогичная функциональность была предоставлена ​​в Версии 6 функциями поиска и подсказки.) "

Мы знаем, что существует ограничение на значение файловых дескрипторов. Это значение находится в диапазоне 0OPEN_MAX-1. Поэтому, если более ранние версии используют длинное целое число для файловых дескрипторов, это может означать, что максимальное количество файлов, которые могут (32 бит или 64 бит), а это означает, что количество доступных файловых дескрипторов может быть порядка 10 ^ 18. Я прав?

    2 Solutions collect form web for “В чем причина того, что функция lseek возвращает дескрипторы файлов как длинные целые числа?”

    long параметры lseek и возвращаемое значение являются смещениями в файле; добавление long не оказало никакого влияния на файловые дескрипторы.

    Изменение размера слова оказало влияние на размер используемых смещений; см. lseek64 для обходного пути.

    Я считаю, что это недоразумение.

    Полная цитата из книги

    Три символьные константы – SEEK_SET , SEEK_CUR и SEEK_END – были введены с системой V. До этого, когда было указано как 0 (абсолютное), 1 (относительно текущего смещения) или 2 (относительно конца файла) , Многое программное обеспечение все еще существует с этими номерами, жестко закодированными.

    Символ l в названии lseek означает «длинное целое число». Перед введением типа данных off_t аргумент offset и возвращаемое значение были длинными целыми числами. lseek был введен с версией 7, когда к C. добавлены длинные целые числа (аналогичная функциональность была предоставлена ​​в версии 6 функциями seek и tell ).

    Нигде в тексте ничего не говорится о возвращаемом значении, являющемся файловым дескриптором в любой момент времени.

    Interesting Posts

    Как я могу просмотреть diff или, по крайней мере, более старые версии определенных файлов с помощью etckeeper?

    Как добавить столбец, если строка содержит строку?

    apt-get dist-upgrade хочет удалить слишком много пакетов

    Ошибка в скрипте. Командная находка пропускает папки с символом пробела

    «Обновление программного обеспечения» в Debian пуст, но доступны обновления

    Запрос удаленного почтового сервера POP3 с использованием BASH

    Использовать pdf-файл в качестве обоев

    GPG зависает при доступе к закрытым ключам

    сжатие tar без структуры каталогов

    btrfs: как вычислить экономию пространства при сжатии btrfs?

    Как использовать хэш (#) в качестве разделителя для sed

    Как вы можете назначить один IP на пользователя?

    Перенаправление не отображается в качестве аргумента для сценария источника

    В сценарии Bash как работает команда continue со встроенными циклами?

    Как восстановить структуру каталогов и файлы из перепутанного раздела

    Linux и Unix - лучшая ОС в мире.