mmap()是一个非常重要的系统调用,这仅从mmap本身的功能描述上是看不出来的。从字面上看,mmap就是将一个文件映射进进程的虚拟内存地址,之后就可以通过操作内存的方式对文件的内容进行操作,上代码:
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <fcntl.h>
#include <string.h>
#include <sys/file.h>
#include <wait.h>
#include <sys/mman.h>
#define COUNT 100
#define SHMPATH "shm"
#define MEMSIZE 1024 * 1024 * 1023 * 2
int main()
{
pid_t pid;
int count, shmfd, ret;
int *shm_p;
/* 创建一个POSIX共享内存 */
if ((shmfd = shm_open(SHMPATH, O_RDWR | O_CREAT | O_EXCL, 0644)) >= 0)
{
printf("1.shm id:%d", shmfd);
ftruncate(shmfd, MEMSIZE);
}
else if (errno == EEXIST)
{
if ((shmfd = shm_open(SHMPATH, O_RDWR | O_CREAT, 0644)) >= 0)
{
printf("1. exist shm id:%d", s