进程间通讯---共享内存及信号

1.查看系统中的共享存储段html

ipcs -m
2.删除系统中的共享存储段函数

ipcrm -m [shmid]
3.shmget ( ):建立共享内存操作系统

int shmget(key_t key, size_t size, int shmflg);
[参数key]:由ftok生成的key标识,标识系统的惟一IPC资源。.net

[参数size]:须要申请共享内存的大小。在操做系统中,申请内存的最小单位为页,一页是4k字节,为了不内存碎片,咱们通常申请的内存大小为页的整数倍。指针

[参数shmflg]:若是要建立新的共享内存,须要使用IPC_CREAT,IPC_EXCL,若是是已经存在的,可使用IPC_CREAT或直接传0。htm

[返回值]:成功时返回一个新建或已经存在的的共享内存标识符,取决于shmflg的参数。失败返回-1并设置错误码。blog

4.shmat ( ):挂接共享内存进程

void *shmat(int shmid, const void *shmaddr, int shmflg);
[参数shmid]:共享存储段的标识符。ip

[参数*shmaddr]:shmaddr = 0,则存储段链接到由内核选择的第一个能够地址上(推荐使用)。内存

[参数shmflg]:若指定了SHM_RDONLY位,则以只读方式链接此段,不然以读写方式链接此段。

[返回值]:成功返回共享存储段的指针(虚拟地址),而且内核将使其与该共享存储段相关的shmid_ds结构中的shm_nattch计数器加1(相似于引用计数);出错返回-1。

5.shmdt ( ):去关联共享内存

当一个进程不须要共享内存的时候,就须要去关联。该函数并不删除所指定的共享内存区,而是将以前用shmat函数链接好的共享内存区脱离目前的进程。

int shmdt(const void *shmaddr);
[参数*shmaddr]:链接之后返回的地址。

[返回值]:成功返回0,并将shmid_ds结构体中的 shm_nattch计数器减1;出错返回-1。

6.shmctl ( ):销毁共享内存

int shmctl(int shmid, int cmd, struct shmid_ds *buf);
[参数shmid]:共享存储段标识符。

[参数cmd]:指定的执行操做,设置为IPC_RMID时表示能够删除共享内存。

[参数*buf]:设置为NULL便可。

[返回值]:成功返回0,失败返回-1。
---------------------
做者:YPT_victory
来源:CSDN
原文:https://blog.csdn.net/ypt523/article/details/79958188
版权声明:本文为博主原创文章,转载请附上博文连接!

 

参考:

https://blog.csdn.net/ypt523/article/details/79958188

https://www.cnblogs.com/LUO77/p/5816326.html

相关文章
相关标签/搜索