Scroll to navigation

getpagesize(2) System Calls Manual getpagesize(2)

НАИМЕНОВАНИЕ

getpagesize - определяет размер страницы памяти

БИБЛИОТЕКА

Стандартная библиотека языка C (libc, -lc)

ОБЗОР

#include <unistd.h>
int getpagesize(void);

Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

getpagesize():


Начиная glibc 2.20:
_DEFAULT_SOURCE || ! (_POSIX_C_SOURCE >= 200112L)
glibc с 2.12 до glibc 2.19:
_BSD_SOURCE || ! (_POSIX_C_SOURCE >= 200112L)
До glibc 2.12:
_BSD_SOURCE || _XOPEN_SOURCE >= 500

ОПИСАНИЕ

Вызов getpagesize() возвращает количество байтов в странице памяти, где «страница» представляет собой блок фиксированной длины, единица измерения при выделения памяти и файлового отображения, выполняемого с помощью mmap(2).

СТАНДАРТЫ

SVr4, 4.4BSD, SUSv2. В SUSv2 вызов getpagesize() отмечен как УСТАРЕВШИЙ, и был удалён из POSIX.1-2001; в HP-UX такого вызова нет.

ПРИМЕЧАНИЯ

В переносимых программах вместо getpagesize() следует использовать sysconf(_SC_PAGESIZE):


#include <unistd.h>
long sz = sysconf(_SC_PAGESIZE);

(большинство систем позволяют использовать _SC_PAGE_SIZE вместо _SC_PAGESIZE.)

В Linux системный вызов getpagesize() есть не на всех архитектурах. Если он есть, то он возвращает символ ядра PAGE_SIZE, чьё значение зависит от архитектуры и модели компьютера. Как правило, создаваемые двоичные файлы используются для всей архитектуры, а не для конкретной одной модели. Поэтому рекомендуется определять PAGE_SIZE не на стадии компиляции из файла заголовка, а при выполнении программы с помощью данной функции, по крайней мере на тех архитектурах (таких как sun), где зависимость от модели существует. В этом случае в библиотечные вызовы glibc 2.0 завершатся неудачно, так как её getpagesize() возвращает статически определённое значение и не использует системный вызов. В glibc 2.1 это исправлено.

СМОТРИТЕ ТАКЖЕ

mmap(2), sysconf(3)

ПЕРЕВОД

Русский перевод этой страницы руководства разработал(и) Azamat Hackimov <azamat.hackimov@gmail.com>, Dmitry Bolkhovskikh <d20052005@yandex.ru>, Vladislav <ivladislavefimov@gmail.com>, Yuri Kozlov <yuray@komyakino.ru>, Иван Павлов <pavia00@gmail.com> и Kirill Rekhov <krekhov.dev@gmail.com>

Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу списка рассылки русских переводчиков.

5 февраля 2023 г. Справочные страницы Linux 6.03