C语言 NOTE32
系统编程之共享内存 1.创建键值: 头文件: #include <sys/types.h> #include <sys/ipc.h> 函数原型: key_t ftok ( const char * pathname , int proj_id ) ; 参数分析: pathname ---->一般设为当前文件路径"."。 proj_id ---->编号,主要是为了区分不同的键值。 两个进程只要是使用相同的键,那么他们就指向同一个通信模块 使用ipcs -m 查看系统的共享内存: 2.创建共享内存shmid 功能 获取共享内存的 ID 头文件 #include <sys/ipc.h> #include <sys/shm.h> 函数原型 int shmget ( key_t key , size_t size , int shmflg ) ; 参数 分析 key 共享内存的键值 size 共享内存的尺寸(PAGE_SIZE 的整数倍) shmflg 标志位如下 IPC_CREAT 如果 key 对应的共享内存不存在,则创建之 IPC_EXCL 如果该 key 对应的共享内存已存在,则报错 SHM_HUGETLB 使用“大页面”来分配共享内存 SHM_NORESERVE 不在交换分区中为这块共享内存保留空间 mode 共享内存的访问权限(八进制,如 0644) 返回值 成功 该共享内存的