Man page - msync(2)

Packages contains this manual

Available languages:

en fr ja ru ro de

Manual

msync

НАИМЕНОВАНИЕ
БИБЛИОТЕКА
ОБЗОР
ОПИСАНИЕ
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
ОШИБКИ
ВЕРСИИ
СТАНДАРТЫ
ИСТОРИЯ
СМОТРИТЕ ТАКЖЕ
ПЕРЕВОД

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

msync - синхронизирует содержимое файла с его отображением в памяти

БИБЛИОТЕКА

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

ОБЗОР

#include <sys/mman.h>

int msync(void addr [. length ], size_t length , int flags );

ОПИСАНИЕ

Вызов msync () сбрасывает изменения файла, который отображён в память с помощью mmap (2), обратно в файловую систему. Без использования этого вызова нет никакой гарантии, что изменения будут записаны в файл до вызова munmap (2). Если быть точнее, то на диск записывается часть файла, начинающаяся в памяти с адреса addr длиной length .

В аргументе flags должен быть один из флагов MS_ASYNC и MS_SYNC , а также дополнительно можно указать MS_INVALIDATE . Данные биты имеют следующее значение:
MS_ASYNC

Запланировать обновление, но вызов завершается сразу.

MS_SYNC

Запланировать обновление и ждать его завершения.

MS_INVALIDATE

Считать недействительными другие отображения того же файла (для того, чтобы они могли обновиться до достоверных значений, которые запишутся).

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

При успешном выполнении возвращается 0. При ошибке возвращается -1, а в errno содержится код ошибки.

ОШИБКИ

EBUSY

В flags указан MS_INVALIDATE , но на указанный адресный диапазон есть блокировка в памяти.

EINVAL

Значение addr не кратно PAGESIZE; в flags установлен любой другой бит, отличный от MS_ASYNC | MS_INVALIDATE | MS_SYNC ; в flags установлены сразу MS_SYNC и MS_ASYNC .

ENOMEM

Указанная память (или её часть) не была отображена.

ВЕРСИИ

Согласно POSIX, в flags должен быть указан или MS_SYNC , или MS_ASYNC и отказ включить один из этих флагов вызывает ошибку в msync () на некоторых системах. Однако Linux позволяет вызывать msync () без этих флагов, используя семантику, которая (в настоящее время) эквивалентна указанию MS_ASYNC (начиная с Linux 2.6.19, MS_ASYNC , фактически, ничего не делает, так как ядро правильно отслеживает грязные страницы и записывает их в место хранения при необходимости). Несмотря на поведение Linux, в переносимых, ориентированных на будущее приложениях в flags должен быть указан или MS_SYNC , или MS_ASYNC .

СТАНДАРТЫ

POSIX.1-2008.

ИСТОРИЯ

POSIX.1-2001.

Этот вызов появился в Linux 1.3.21, и в нём использовалось EFAULT вместо ENOMEM . В Linux 2.4.19 это было изменено на значение POSIX ENOMEM .

В системах POSIX, в которых доступен msync (), значения _POSIX_MAPPED_FILES и _POSIX_SYNCHRONIZED_IO , определённые в <unistd.h> , больше нуля. (См. также sysconf (3).)

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

mmap (2)

B.O. Gallmeister, POSIX.4, O’Reilly, стр. 128–129 и 389–391.

ПЕРЕВОД

Русский перевод этой страницы руководства разработал(и) aereiae <aereiae@gmail.com>, Alexey <a.chepugov@gmail.com>, Azamat Hackimov <azamat.hackimov@gmail.com>, Dmitriy S. Seregin <dseregin@59.ru>, Dmitry Bolkhovskikh <d20052005@yandex.ru>, ITriskTI <ITriskTI@gmail.com>, Max Is <ismax799@gmail.com>, Yuri Kozlov <yuray@komyakino.ru>, Иван Павлов <pavia00@gmail.com>, Малянов Евгений Викторович <maljanow@outlook.com> и Kirill Rekhov <krekhov.dev@gmail.com>

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

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