msync(2) - wariua/manpages-ko GitHub Wiki

NAME

msync - νŒŒμΌμ„ λ©”λͺ¨λ¦¬ λ§΅κ³Ό 동기화 ν•˜κΈ°

SYNOPSIS

#include <sys/mman.h>

int msync(void *addr, size_t length, int flags);

DESCRIPTION

msync()λŠ” mmap(2)으둜 λ©”λͺ¨λ¦¬λ‘œ λ§΅ ν•œ 파일의 μ½”μ–΄ λ‚΄ 사본에 이뀄진 λ³€κ²½ λ‚΄μš©μ„ 파일 μ‹œμŠ€ν…œμœΌλ‘œ λ‚΄λ¦°λ‹€. 이 ν˜ΈμΆœμ„ μ“°μ§€ μ•ŠμœΌλ©΄ munmap(2)을 ν˜ΈμΆœν•˜κΈ° μ „μ—λŠ” λ³€κ²½ λ‚΄μš©μ΄ κΈ°λ‘λœλ‹€λŠ” 보μž₯이 μ—†λ‹€. 더 μ •ν™•ν•˜κ²ŒλŠ” addrμ—μ„œ μ‹œμž‘ν•˜κ³  길이가 length인 λ©”λͺ¨λ¦¬ μ˜μ—­μ— λŒ€μ‘ν•˜λŠ” 파일 뢀뢄을 κ°±μ‹ ν•œλ‹€.

flags μΈμžμ—λŠ” MS_ASYNC와 MS_SYNC 쀑 λ”± ν•˜λ‚˜λ₯Ό μ§€μ •ν•΄μ•Ό ν•˜λ©°, μ„ νƒμ μœΌλ‘œ MS_INVALIDATE λΉ„νŠΈκΉŒμ§€ ν¬ν•¨μ‹œν‚¬ 수 μžˆλ‹€. 이 λΉ„νŠΈλ“€μ˜ μ˜λ―ΈλŠ” λ‹€μŒκ³Ό κ°™λ‹€.

MS_ASYNC
갱신을 μ˜ˆμ•½ν•˜κ²Œ ν•˜κ³  ν˜ΈμΆœμ€ μ¦‰μ‹œ λ°˜ν™˜ν•œλ‹€.
MS_SYNC
갱신을 μš”μ²­ν•˜κ³  μ™„λ£Œλ˜κΈ°λ₯Ό κΈ°λ‹€λ¦°λ‹€.
MS_INVALIDATE
같은 파일의 λ‹€λ₯Έ 맀핑듀을 λ¬΄νš¨ν™”ν•˜λ„λ‘ μš”μ²­ν•œλ‹€. (κ·Έλž˜μ„œ 방금 써넣은 μ΅œμ‹  κ°’λ“€λ‘œ 갱신될 수 있게 ν•œλ‹€.)

RETURN VALUE

성곡 μ‹œ 0을 λ°˜ν™˜ν•œλ‹€. 였λ₯˜ μ‹œ -1을 λ°˜ν™˜ν•˜λ©° errnoλ₯Ό 적절히 μ„€μ •ν•œλ‹€.

ERRORS

EBUSY
flags에 MS_INVALIDATEλ₯Ό μ§€μ •ν–ˆλŠ”λ° μ§€μ •ν•œ μ£Όμ†Œ λ²”μœ„μ— λ©”λͺ¨λ¦¬ 잠금이 μ‘΄μž¬ν•œλ‹€.
EINVAL
addr이 PAGESIZE의 λ°°μˆ˜κ°€ μ•„λ‹ˆλ‹€. flags에 MS_ASYNC | MS_INVALIDATE | MS_SYNC μ™Έμ˜ λΉ„νŠΈκ°€ 섀정돼 μžˆλ‹€. flags에 MS_SYNC와 MS_ASYNCκ°€ ν•¨κ»˜ 섀정돼 μžˆλ‹€.
ENOMEM
μ§€μ •ν•œ λ©”λͺ¨λ¦¬κ°€ (λ˜λŠ” κ·Έ 일뢀가) λ§΅ λ˜μ–΄ μžˆμ§€ μ•Šλ‹€.

CONFORMING TO

POSIX.1-2001, POSIX.1-2008.

λ¦¬λˆ…μŠ€ 1.3.21μ—μ„œ 이 호좜이 λ„μž…ν–ˆμ„ λ•ŒλŠ” ENOMEM λŒ€μ‹  EFAULTλ₯Ό 썼닀. λ¦¬λˆ…μŠ€ 2.4.19μ—μ„œ POSIX 값인 ENOMEM으둜 λ°”λ€Œμ—ˆλ‹€.

AVAILABILITY

msync()κ°€ μ‚¬μš© κ°€λŠ₯ν•œ POSIX μ‹œμŠ€ν…œμ—λŠ” <unistd.h>에 _POSIX_MAPPED_FILES와 _POSIX_SYNCHRONIZED_IOκ°€ 0보닀 큰 κ°’μœΌλ‘œ μ •μ˜λ˜μ–΄ μžˆλ‹€. (sysconf(3)도 μ°Έκ³ .)

NOTES

POSIX에 λ”°λ₯΄λ©΄ flags에 MS_SYNC와 MS_ASYNC 쀑 ν•˜λ‚˜λ₯Ό μ§€μ •ν•΄μ•Ό ν•˜λ©° μ‹€μ œλ‘œ 일뢀 μ‹œμŠ€ν…œμ—μ„œλŠ” κ·Έ ν”Œλž˜κ·Έλ“€ 쀑 ν•˜λ‚˜λ₯Ό ν¬ν•¨μ‹œν‚€μ§€ μ•ŠμœΌλ©΄ msync()κ°€ μ‹€νŒ¨ν•˜κ²Œ λœλ‹€. ν•˜μ§€λ§Œ λ¦¬λˆ…μŠ€μ—μ„œλŠ” λ‘˜ 쀑 μ–΄λŠ μͺ½λ„ μ§€μ •ν•˜μ§€ μ•Šμ€ msync() ν˜ΈμΆœμ„ ν—ˆμš©ν•˜λ©°, κ·Έ (ν˜„μž¬) μ˜λ―ΈλŠ” MS_ASYNCλ₯Ό μ§€μ •ν•œ 것과 λ™λ“±ν•˜λ‹€. (λ¦¬λˆ…μŠ€ 2.6.19λΆ€ν„°λŠ” μ»€λ„μ—μ„œ λ³€κ²½ νŽ˜μ΄μ§€λ“€μ„ μ˜¬λ°”λ‘œ μΆ”μ ν•΄μ„œ ν•„μš”ν•˜λ©΄ μ €μž₯μ†Œλ‘œ λ‚΄λ € μ£ΌκΈ° λ•Œλ¬Έμ— MS_ASYNCκ°€ μ‹€μ œλ‘œλŠ” no-op이닀.) 그런 λ¦¬λˆ…μŠ€μ˜ λ™μž‘ 방식에도 λΆˆκ΅¬ν•˜κ³ , 이식 κ°€λŠ₯ν•˜κ³  미래λ₯Ό λŒ€λΉ„ν•˜λŠ” μ‘μš©μ—μ„œλŠ” flags에 MS_SYNC와 MS_ASYNC 쀑 ν•˜λ‚˜λ₯Ό κΌ­ μ§€μ •ν•΄μ•Ό ν•  것이닀.

SEE ALSO

mmap(2)

B.O. Gallmeister, POSIX.4, O.Reilly, 128-129μͺ½ 및 389-391μͺ½.


2017-09-15

⚠️ **GitHub.com Fallback** ⚠️