mmap64 예제
2/08/2019mmap() 및 mmap64(mmap64)함수는 요청자에서 시작하여 len을 위해 계속하여 요청자의 주소 공간으로 지정한 개체 내의 영역을 호출자의 주소 공간으로 매핑하고 위치를 반환합니다. mmap64() 함수는 mmap()의 대용량 파일 지원 버전입니다. 매핑하는 개체는 다음 중 하나일 수 있습니다. Linux에서 개체가 끝난 후 이러한 부분 페이지에 데이터를 작성하면 파일이 닫혀 매핑되지 않은 후에도 데이터가 페이지 캐시에 남아 있으며 데이터가 파일 자체에 기록되지 않더라도 후속 매핑은 수정된 콘텐츠를 볼 수 있습니다. 경우에 따라 이 문제는 msync(2)를 호출하여 맵 해제가 수행되기 전에 해결할 수 있습니다. 그러나 tmpfs에서는 작동하지 않습니다(예: shm_overview(7)에 설명된 POSIX 공유 메모리 인터페이스를 사용하는 경우). mmap64() 함수는 2기가바이트보다 큰 파일에서 메모리를 프로세스 메모리에 매핑하는 데 사용할 수 있다는 점을 제외하면 mmap() 함수와 동일합니다. mmap64() 함수는 큰 파일 확장자의 일부입니다. 그러나, 나는 당신의 문제는 당신이 지역을 호출 하는 것 같아요Addr. mmap64()에 대한 마지막 인수를 개요에서 오프셋이라고 하며, mmap()은 POSIX 1003.1 MF| SHM | TYM; mmap64()는 대용량 파일 지원 시스템은 항상 개체의 끝에 있는 부분 페이지를 0으로 채웁니다. 또한 시스템은 개체의 마지막 페이지의 수정된 부분을 끝까지 기록하지 않습니다. 특정 플래그 상수는 _BSD_SOURCE 또는 _SVID_SOURCE가 정의된 경우에만 정의됩니다.
_GNU_SOURCE를 요구하는 것으로도 충분하며, 이러한 플래그는 모두 Linux에 특정하므로 매크로를 구체적으로 요구하는 것이 더 논리적일 것입니다.) 관련 플래그는 다음과 같습니다: MAP_32BIT, MAP_ANONYMOUS (및 동의어 MAP_ANON), MAP_DENYWRITE, MAP_EXECUTABLE, MAP_FILE, MAP_GROWSDOWN, MAP_HUGETLB, MAP_LOCKED, MAP_NONBLOCK, MAP_NORESERVE, MAP_채우기 및 MAP_STACK. 플래그 인수에는 형식(MAP_TYPE 비트에 의해 마스킹)과 추가 비트가 포함됩니다.