Linux 共享内存详解一
共享内存段被多个进程附加的时候,如果不是所有进程都已经调用shmdt,那么删除该共享内存段时,会出现一个临时的不完整的共享内存段(key值是0),无法彻底删除。只有当所有进程都调用shmdt,这个临时的不完整共享内存段才会消失。
//共享内存 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <errno.h> #include <sys/ipc.h> #include <sys/shm.h>typedef struct _student {char name[64];int index; }Student;int main() {//创建内存中的共享内存区,大小是sizeof(Student),权限是0666int shmid= shmget(0x2234,sizeof(Student),0666|IPC_CREAT|IPC_EXCL);if(shmid==-1){if(errno==EEXIST){//该key值的共享内存已经存在shmid=shmget(0x2234,sizeof(Student),0666);}else{perror("shmget() err");return -1;}}//创建进程内的映射共享内存区void *buf=NULL;//shmat()第二个参数为NULL,表示由系统创建进程内的共享内存,第三个参数表示的是读写权限//返回值buf是系统在本进程内分配的内存块的首地址buf=shmat(shmid,NULL,0);//向本进程的共享内存写入数据strcpy(buf,"11112");printf("请输入操作!\n");char ch=getchar();if(ch=='1'){//将本进程中映射共享内存的内存块释放,本进程取消附加共享内存 shmdt(buf);//删除共享内存段 shmctl(shmid,IPC_RMID,NULL);}return 0; }
转载于:https://www.cnblogs.com/zhanggaofeng/p/6224091.html
Linux 共享内存详解一相关推荐
- 【Boost C++ 库】共享内存详解
文章目录 1 共享内存 1.1 创建共享内存 1.2 将共享内存映射到进程的地址空间 1.3 在共享内存中写入和读取 1.4 删除共享内存 1.5 使用特定于Windows的共享内存 传送门 ==&g ...
- Windows共享内存详解
文章目录 前言 一.什么是共享内存? 二.使用方法 三.具体使用 四.注意事项 前言 一般来说,进程都处于不同的空间内,如果进程间想要通信,就需要用到其它方法,例如共享内存.管道.邮槽.本地回环网络. ...
- 内存详解-理解 JVM 如何使用 Windows 和 Linux 上的本机内存
内存详解 理解 JVM 如何使用 Windows 和 Linux 上的本机内存 Java™ 堆耗尽并不是造成 java.lang.OutOfMemoryError 的惟一原因.如果本机内存 耗尽,则会 ...
- linux设置共享权限设置命令,Linux系列知识详解(三)--------- Linux链接命令和权限管理命令...
Linux系列知识详解(三)--------- Linux链接命令和权限管理命令 一:链接命令ln 简介:什么是链接命令?链接命令分为软链接和硬链接.其中软链接产生的新文件是以路径的形式表示原文件,类 ...
- linux下挂载共享目录,linux mount挂载共享目录详解
linux mount挂载共享目录详解 这里有新鲜出炉的 Linux 常用命令,程序狗速度看过来! Linux Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 ...
- linux命令ls查看内存,Linux ls 命令详解
Linux ls命令详解 Linux中ls命令用于显示指定工作目录下之内容,其内容就是指定的工作目录所含之文件及子目录,该命令的用法为"ls [参数] [目录名]",其常用参数有& ...
- Linux /dev目录详解和Linux系统各个目录的作用
Linux /dev目录详解和Linux系统各个目录的作用 标签: linuxtcpfunctionclassfirefoxtimer 2012-01-11 23:08 45517人阅读 评论(2) ...
- linux编译bzip2,linux bzip2 命令详解
linux bzip2 命令详解 功能说明:.bz2文件的压缩程序. 语 法:bzip2 [-cdfhkLstvVz][--repetitive-best][--repetitive-fast][- ...
- Linux常用命令详解文库
Linux常用命令详解文库.txt精神失常的疯子不可怕,可怕的是精神正常的疯子!Linux常用命令详解 来源: LUPA开源社区 发布时间: 2007-05-27 05:34 版权申明 字体: ...
最新文章
- lsmod modinfo ....
- 网页上的图片怎么提取出来_如何在网站上提取图片素材
- gnu linux空间包括什么,不知道这十项Linux常识,就别说自己玩过Linux
- ASP.NET- 执行SQL超时的解决方案
- matlab控制图像的边界(margin),subplot的间距(gap)
- 如何用 Tensorflow 搭建神经网络-了解神经网络基本概念
- RocketMQ系列实战
- jquery gotop插件
- SQL2000无法安装,提示挂起
- 生动理解java接口
- 移动apn接入点哪个快_51物联卡:使用物联网卡时为什么总要让你设置APN?
- 中小企业如何做全网营销推广?常见的网络营销推广技巧和策略
- 【操作系统----Linux】Linux作为服务器系统安装过程
- linux 中的 ln 命令,Linux ln命令操作指南
- python是面向对象开发_Python之面向对象
- PS基础教程[7]如何为照片瘦身
- macOS Big Sur 11.0(20A5343i)原版镜像
- phpcms教程:phpcms v9 筛选功能的图文教程
- 格式工厂,帮你搞定各种格式转换!
- c语言编写整数划分程序,整数划分的问题
热门文章
- 【POJ - 3177】Redundant Paths(边双连通分量,去重边)
- 【CodeForces - 988C 】Equal Sums (思维,STLmap,STLset,tricks)
- C++手动开启O2优化(以及-O -O1 -O2 -O3优化的知识点)(竞赛可用)
- 【POJ-3259】 Wormholes(判负环,spfa算法)
- oracle排名怎么去除空值影响,Oracle排序中null值处理方法讲解
- linux内核 sin头文件,Linux内核中中断request_irq详解--中断共享问题解决
- Linux 软件包管理器的目的是什么,Linux软件包的管理--RPM包管理器
- mysql中nchar_浅谈SQL Server、MySQL中char,varchar,nchar,nvarchar区别
- (多线程)leetcode1195. 交替打印字符串 最简单解法一个变量搞定
- Harris的角点检测和特征匹配