2017-01-27 3 views
4

Почему syscall getpagesize() возвращает int, а не unsigned int или size_t?Почему getpagesize() возвращает int?

Прототип и краткое описание ниже:

GETPAGESIZE(2)                
    NAME 
      getpagesize - get memory page size 
    SYNOPSIS 
      #include <unistd.h> 
      int getpagesize(void); 
+1

Скорее всего, для подобных * "причин" * как [это] (http://stackoverflow.com/questions/38719737/why-does-fgets-accept-an-int-instead-of-a-size-t), если мне пришлось угадать [?] –

ответ

8

int было вполне достаточно, когда он был изобретен. Но это уже не проблема, потому что getpagesize() был удален из стандарта POSIX с 2001 года и был заменен sysconf(). Вы должны использовать sysconf(_SC_PAGESIZE).

getpagesize() returning an int was one of the major reasons why it was removed:

getpagesize

Функция getpagesize() возвращает текущий размер страницы. Это эквивалентно sysconf (_SC_PAGE_SIZE) и sysconf (_SC_PAGESIZE). Этот интерфейс, возвращающий int, может иметь проблемы, представляющие соответствующие значения в будущем. Также поведение этого интерфейса не указано для систем, поддерживающих страницы с переменным размером. В системах с переменной скоростью страницы страница может быть чрезвычайно большой (теоретически, до размера памяти). Это позволяет очень эффективные преобразования адресов для больших сегментов памяти, которые имеют общие атрибуты страницы. Замечание об этом было добавлено в Application Application, а интерфейс с маркировкой Legacy - с рекомендацией, что приложения должны использовать интерфейс sysconf().

(выделено мной).

+0

спасибо за этот ответ – Oscar

Смежные вопросы