.\" -*- coding: UTF-8 -*- .\" Copyright (C) 1996 Andries Brouwer (aeb@cwi.nl) .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH msync 2 "30 марта 2023 г." "Linux man\-pages 6.05.01" .SH ИМЯ msync \- синхронизирует содержимое файла с его отображением в памяти .SH LIBRARY Standard C library (\fIlibc\fP, \fI\-lc\fP) .SH СИНТАКСИС .nf \fB#include \fP .PP \fBint msync(void \fP\fIaddr\fP\fB[.\fP\fIlength\fP\fB], size_t \fP\fIlength\fP\fB, int \fP\fIflags\fP\fB);\fP .fi .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 "ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ" On success, zero is returned. On error, \-1 is returned, and \fIerrno\fP is set to indicate the error. .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 ВЕРСИИ .\" 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 СТАНДАРТЫ POSIX.1\-2008. .SH ИСТОРИЯ POSIX.1\-2001. .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 "СМ. ТАКЖЕ" \fBmmap\fP(2) .PP B.O. Gallmeister, POSIX.4, O'Reilly, pp. 128\[en]129 and 389\[en]391. .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 .