目录
共享内存
在内存中申请一块共享区域,进程就可以通过访问这块共同区域实现数据的读和写进而实现通信。
//共享内存的创建:
int shmget(key_t key, size_t size, int shmflg);//成功返回shmid;失败返回-1;
//shmflg: 0644 | IPC_CREAT | IPC_EXCL
//连接进程:
void *shmat(int shm_id, const void *shm_addr, int shmflg);//成功返回指向共享内存第一个字节的指针;失败返回-1;
//shm_addr:指向共享内存连接到当前进程中的地址位置,通常为空,表示让系统来选择共享内存的地址
//shm_flg:是一组标志位,通常位0;
//将共享内存分离出进程
int shmdt(const void *shmaddr);//成功返回0;失败返回-1;
//shmaddr:为shmat的返回值
//删除共享内存以及其他控制操作
int shmctl(int shm_id, int command, struct shmin_ds *buf);
//command:IPC_STAT(把shmid_ds结构中的数据设置为共享内存的当前关联值,即用共享内存的当前关联值覆盖shmid_ds的值) IPC_SET(如果进程有足够的权限,就把共享内存的当前关联值设置为shmid_ds结构中给出的值) IPC_RMID(删除共享内存)
//buf是一个结构指针,它指向共享内存模式和访问权限的结构
//shmid_ds结构至少包括以下成员:
/*struct shmid_ds
{
uid_t shm_perm.uid;
uid_t shm_perm.gid;
mode_t shm_perm.mode;
}*/