.\" -*- coding: UTF-8 -*- .\" Copyright (C) 1996 Andries Brouwer (aeb@cwi.nl) .\" .\" %%%LICENSE_START(VERBATIM) .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this .\" manual under the conditions for verbatim copying, provided that the .\" entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one. .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume no .\" responsibility for errors or omissions, or for damages resulting from .\" the use of the information contained herein. The author(s) may not .\" have taken the same level of care in the production of this manual, .\" which is licensed free of charge, as they might when working .\" professionally. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. .\" %%%LICENSE_END .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH MSYNC 2 "9 июня 2020 г." Linux "Руководство программиста Linux" .SH ИМЯ msync \- синхронизирует содержимое файла с его отображением в памяти .SH СИНТАКСИС \fB#include \fP .PP \fBint msync(void *\fP\fIaddr\fP\fB, size_t \fP\fIlength\fP\fB, int \fP\fIflags\fP\fB);\fP .SH ОПИСАНИЕ Вызов \fBmsync\fP() сбрасывает изменения файла, который отображён в память с помощью \fBmmap\fP(2), обратно в файловую систему. Без использования этого вызова нет никакой гарантии, что изменения будут записаны в файл до вызова \fBmunmap\fP(2). Если быть точнее, то на диск записывается часть файла, начинающаяся в памяти с адреса \fIaddr\fP длиной \fIlength\fP. .PP В аргументе \fIflags\fP должен быть один из флагов \fBMS_ASYNC\fP и \fBMS_SYNC\fP, а также дополнительно можно указать \fBMS_INVALIDATE\fP. Данные биты имеют следующее значение: .TP \fBMS_ASYNC\fP Запланировать обновление, но вызов завершается сразу. .TP \fBMS_SYNC\fP Запланировать обновление и ждать его завершения. .TP \fBMS_INVALIDATE\fP .\" Since Linux 2.4, this seems to be a no-op (other than the .\" EBUSY check for VM_LOCKED). Считать недействительными другие отображения того же файла (для того, чтобы они могли обновиться до достоверных значений, которые запишутся). .SH "ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ" При успешном выполнении возвращается 0. В случае ошибки возвращается \-1, а \fIerrno\fP устанавливается в соответствующее значение. .SH ОШИБКИ .TP \fBEBUSY\fP В \fIflags\fP указан \fBMS_INVALIDATE\fP, но на указанный адресный диапазон есть блокировка в памяти. .TP \fBEINVAL\fP Значение \fIaddr\fP не кратно PAGESIZE; в \fIflags\fP установлен любой другой бит, отличный от \fBMS_ASYNC\fP | \fBMS_INVALIDATE\fP | \fBMS_SYNC\fP; в \fIflags\fP установлены сразу \fBMS_SYNC\fP и \fBMS_ASYNC\fP. .TP \fBENOMEM\fP Указанная память (или её часть) не была отображена. .SH "СООТВЕТСТВИЕ СТАНДАРТАМ" POSIX.1\-2001, POSIX.1\-2008. .PP Этот вызов появился в Linux 1.3.21, и в нём использовалось \fBEFAULT\fP вместо \fBENOMEM\fP. В Linux 2.4.19 это было изменено на значение POSIX \fBENOMEM\fP. .PP .\" POSIX.1-2001: It shall be defined to -1 or 0 or 200112L. .\" -1: unavailable, 0: ask using sysconf(). .\" glibc defines them to 1. В системах POSIX, в которых доступен \fBmsync\fP(), значения \fB_POSIX_MAPPED_FILES\fP и \fB_POSIX_SYNCHRONIZED_IO\fP, определённые в \fI\fP, больше нуля. (См. также \fBsysconf\fP(3).) .SH ЗАМЕЧАНИЯ .\" commit 204ec841fbea3e5138168edbc3a76d46747cc987 Согласно POSIX, в \fIflags\fP должен быть указан или \fBMS_SYNC\fP, или \fBMS_ASYNC\fP и отказ включить один из этих флагов вызывает ошибку в \fBmsync\fP() на некоторых системах. Однако Linux позволяет вызывать \fBmsync\fP() без этих флагов, используя семантику, которая (в настоящее время) эквивалентна указанию \fBMS_ASYNC\fP (начиная с Linux 2.6.19, \fBMS_ASYNC\fP, фактически, ничего не делает, так как ядро правильно отслеживает грязные страницы и записывает их в место хранения при необходимости). Несмотря на поведение Linux, в переносимых, ориентированных на будущее приложениях в \fIflags\fP должен быть указан или \fBMS_SYNC\fP, или \fBMS_ASYNC\fP. .SH "СМ. ТАКЖЕ" \fBmmap\fP(2) .PP B.O. Gallmeister, POSIX.4, O'Reilly, страницы 128\(en129 и 389\(en391. .SH ЗАМЕЧАНИЯ Эта страница является частью проекта Linux \fIman\-pages\fP версии 5.10. Описание проекта, информацию об ошибках и последнюю версию этой страницы можно найти по адресу \%https://www.kernel.org/doc/man\-pages/. .PP .SH ПЕРЕВОД Русский перевод этой страницы руководства был сделан aereiae , Alexey , Azamat Hackimov , Dmitriy S. Seregin , Dmitry Bolkhovskikh , ITriskTI , Max Is , Yuri Kozlov , Иван Павлов и Малянов Евгений Викторович . .PP Этот перевод является бесплатной документацией; прочитайте .UR https://www.gnu.org/licenses/gpl-3.0.html Стандартную общественную лицензию GNU версии 3 .UE или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ. .PP Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на .MT man-pages-ru-talks@lists.sourceforge.net .ME .