//建立共享内存区域
intshared_id;
char *region;
const intshm_size = 1024;
shared_id = shmget(IPC_PRIVATE,//保证使用唯一ID
shm_size,
IPC_CREAT | IPC_EXCL |//创建一个新的内存区域
S_IRUSR | S_IWUSR);//使当前用户可以读写这个区域
//交叉进程或生成进程.
//将新建的内存区域放入进程/线程
region = (char*) shmat(segment_id, 0, 0);
//其他程序代码
...
//将各个进程/线程分离出来
shmdt(region);
//破坏掉共享内存区域
shmctl(shared_id, IPC_RMID, 0);
const char filename[] = "testfile";
intfd;
char *mapped_mem;
const intflength = 1024;
fd = open(filename, O_RDWR | O_CREAT, S_IRUSR | S_IWUSR);
lseek(fd, flength + 1, SEEK_SET);
write(fd, "\0", 1);
lseek(fd, 0, SEEK_SET);
mapped_mem = mmap(0,
flength,
PROT_WRITE, //允许写入
MAP_SHARED,//写入内容被立即写入到文件
fd,
0);
close(fd);
//使用映射区域.
...
munmap(file_memory, flength);
| 欢迎光临 站长论坛 (https://tzlink.com/bbs/) | Powered by Discuz! X3.2 |