环境:Vmware Workstation;CentOS-6.4-x86_64
说明:
1、创建共享内存使用的函数:int shmget(key_t key, size_t size, int shm-flg);
2、参数key既可以是IPC_PRIVATE(0),也可是是ftok函数返回的一个关键字。
3、参数size指定段的大小。
4、参数flags
八进制数,0xxx。转化为二进制后分别代表rw-rw-rw-
IPC_CREAT:当shmflg&IPC_CREAT为真时,如果内核中不存在键值与key相等的共享内存,则新建一个共享内存;如果存在这样的共享内存,返回此共享内存的标识符;IPC_CREAT|IPC_EXCL:如果内核中不存在键值 与key相等的共享内存,则新建一个共享内存;如果存在这样的共享内存则报错5、shmget成功返回shmid,失败返回-1。
6、在命令行执行ipcs –m 显示,已经成功的创建了一块共享内存区。
7、nattch字段显示已经附加到这个内存区的进程数。
步骤:
1、创建源文件main.c:
#include <stdio.h>
#include <sys/ipc.h>
#include <sys/shm.h>
int main(int argc, char *args[])
{
// 建立一块共享内存区域
int shid = shmget(IPC_PRIVATE, 1024, IPC_CR