mmap(NULL, n, PROT_WRITE, MAP_ANON | MAP_PRIVATE, -1, 0);
hi ... Я пытаюсь выяснить значение выше кода ...?Что делает mmap?
mmap(NULL, n, PROT_WRITE, MAP_ANON | MAP_PRIVATE, -1, 0);
hi ... Я пытаюсь выяснить значение выше кода ...?Что делает mmap?
man mmap
поможет вам здесь.
Он создает отображение памяти в виртуальном адресном пространстве процесса. Это создает анонимное сопоставление, что довольно похоже на использование malloc
для выделения n
байт памяти.
Параметры:
NULL
- ядро будет выбрать адрес для отображенияn
- длина отображения (в байтах)PROT_WRITE
- страницы могут быть написаныMAP_ANON | MAP_PRIVATE
- сопоставление не поддерживается файлом, а обновления, записанные для сопоставления, являются приватными для процесса-1
- дескриптор файла; не используется, потому что отображение не поддерживается файлом0
- смещение в файле, с которого начинается отображение - опять же, не используется, потому что отображение не поддерживается файломОн запрашивает приватное, записываемое анонимное отображение n
байт памяти.
fork()
ребенка и родителя будут иметь независимые отображения);В этом случае, по существу, запрашивает блок n
байт памяти, так что примерно эквивалентно malloc(n)
(хотя он должен быть освобожден с munmap()
, а не free()
). Он также запрашивает, чтобы память записывалась, но не читалась, но такой запрос обычно не поддерживается базовым оборудованием.
Или 'man 2 mmap'. –