Memory-map은 파일내용을 메모리와 동기화하는 것이다. 예를 들어 mmap.txt에 'Hello, World!'를 저장하면 mmap.txt를 연결한 프로세스의 메모리에 해당 내용이 바뀐다.
#include <sys/types.h>이렇게 하면 파일에 ;Hello, World'가 들어간다. 그 반대도 마찬가지다.
#include <sys/stat.h>
#include <sys/mman.h>
#include <unistd.h>
#include <fcntl.h>
#include <iostream>
using namespace std;
size_t memsize = 30;
int
main(int,char**)
{
int fd = open("mmap.txt", O_RDWR|O_CREAT);
if (0 > fd)
{
cerr << "failed to create or open file" << endl;
return 1;
}
char* fp(NULL);
fp = (char*)mmap(0, memsize, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
if ( MAP_FAILED == fp )
{
cerr << "failed to map memory" << endl;
return 1;
}
cerr << "fp: " << (void*)fp << endl;
cerr << "write" << endl;
sprintf(fp, "Hello, world!");
cerr << "all done." << endl;
return 0;
}
댓글
댓글 쓰기