1. Create shared memory
int shmget(key_t key, int size, int shmflg);
if ((shm_id = shmget (mykey, sizeof (struct sharedbuf), 0600 | IFLAGS)) < 0)
perror ("shmget");
2. Attach shared memory
char *buf = shmat (shm_id, 0, 0);
3. Read / Write shared memory
sharedbuf->size = size_;
memcpy(sharedbuf->buf, mybuf, size_);
memcpy(mybuf, sharedbuf->buf, sharedbuf->size);
3. Detach shared memory (optional)
shmdt (buf);
4. Remove shared memory
if (shmctl (shm_id, IPC_RMID, (struct shmid_ds *)0) < 0)
perror ("shmctl");
shmctl
shmctl 删除共享内存: int shmctl( int shmid , int cmd , struct shmid_ds *buf ); int shmid:是共享内存的ID。 int cmd: 是控制命令,可取值如下: IPC_STAT 得到共享内存的状态, IPC_SET 改变共享内存的状态 IPC_RMID 删除共享内存 struct shmid_ds *buf是一个结构体指针。IPC_STAT的时候,取得的状态放在这个结构体中。如果要改变共享内存的状态,用这个结构体指定。 返回值: 成功:0失败:-1 使用例子: shmctl(shmid,IPC_RMID,NULL);