이 름
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 [AT] soback.net>, 2000년 7월 3일