MSYNC(2)

이름
msync - 메모리 대응과 파일을 동기화한다.

사용법
#include <unistd.h>
#include <sys/mman.h>

#ifdef _POSIX_MAPPED_FILES
#ifdef _POSIX_SYNCHRONIZED_IO

int msync(const void *start, size_t length, int flags);

#endif
#endif

설명
msync 는 mmap(2)를 사용하여 메모리에 대응된 파일의 원 복사본에 만들어진 변경들을 디스크로 다시 세척 한다. 이 함수를 사용하지 않을경우, munmap(2)이 호출되기전에 변경 내용들이 디스크로 다시 쓰여지는 것은 보장되지 않는다. 더 정확히 말하면, start 로 시작하여 length 길이를 가지는 메모리 영역에 해당하는 파일의 일부분이 갱신된다. flags 인자는 MS_ASYNC, MS_SYNC 그리고 MS_INVALIDATE 집합들을 가진다. 그러나, MS_ASYNC 와 MS_SYNC를 동시에 가지지는 않는다. MS_ASYNC는 갱신이 스케줄 됐지만, 호출은 즉시 반환된다는걸 명시한다. MS_SYNC는 갱신을 요구하고 끝나기를 기다린다. MS_INVALIDATE는 같은 파일의 다른 대응들을 무효화하도록 요구한다(그래서 단지 쓰여졌을경우만 새로운 값으로 갱신된다.)

반환값
성공시, 0이 리턴된다. 에러시, -1이 리턴되며 errno 는 적당한 값으로 설정된다.

에러

EINVAL
    start 가 PAGESIZE의 배수가 아니거나, MS_ASYNC | MS_INVALIDATE | MS_SYNC 외 다른 비트들이 flags에 설정되어 있다.

EFAULT
    지정된 메모리(또는 그것의 일부분)가 대응되지 않았다.

호환
POSIX.1b (formerly POSIX.4)

관련 항목
mmap(2), B.O. Gallmeister, POSIX.4, O'Reilly, pp. 128-129 and 389-391.

역자
정강훈 <skyeyes@soback.kornet.net>, 2000년 7월 3일