用于Linux进程通信(IPC Inter-Process-Communication)中,共享内存作为一种方便而且有效的手段, 我们在程序中经常看到。其中共享内存函数由shmget、shmat、shmdt、shmctl四个函数组成,其中shmget用来创建一个共享内存对象。
#include <sys/ipc.h> #include <sys/shm.h> int shmget(key_t key, size_t size, int shmflg); key: 标识符的规则, size:共享存储段的字节数, flag:读写的权限 返回值:成功返回共享存储的id,失败返回-1
使用之前在内核中要使能IP C, 如下几个选项必须要使能:
CONFIG_SYSVIPC=y
CONFIG_SYSVIPC_SYSCTL=y
要不, 在程序运行中会有如下的出错信息:
Unable to get shared memory segment(shmget)
shmid = -1, size = 32, size1 = 8192, Error 38