msync
записывает на диск изменения, внесенные в файл, отраженный в память
при помощи функции
mmap
(2).
Если не использовать эту функцию, то нет никакой гарантии, что
изменения будут записаны в файл до вызова
munmap
(2).
Если быть точнее, то на диск записывается часть файла, начинающаяся
в памяти с адреса
start
длиной
length.
Параметр
flags
состоит из комбинации битов MS_ASYNC, MS_SYNC и MS_INVALIDATE,
но не MS_ASYNC и MS_SYNC.
MS_ASYNC дает системе задание на запись и немедленно
возвращается в вызывающий процесс.
MS_SYNC дает системе задание на запись и ждет его исполнения.
MS_INVALIDATE приказывает системе обновить другие отражения
этого файла так, чтобы они содержали изменения, внесенные
этим вызовом.
ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
При удачном завершении вызова возвращаемое значение равно нулю. При ошибке
оно равно -1, а переменной
errno
присваивается номер ошибки.
НАЙДЕННЫЕ ОШИБКИ
EINVAL
start
не пропорционален PAGESIZE, или в параметре
flags
не установлены биты
MS_ASYNC | MS_INVALIDATE | MS_SYNC.
EFAULT
Заданная область памяти (или ее часть) не является
отражением файла.
СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1b (ранее это была версия POSIX.4)
СМ. ТАКЖЕ
mmap(2),
B.O. Gallmeister, POSIX.4, O'Reilly, стр. 128-129 и 389-391.