SYSTEM V标准的共享内存用于进程间通信的权限管理示例

简介: 输出同现SEGMENTATION FAULT是因为试图写操作,这是因为将虚拟内存挂载为了READ ONLY方式导致的权限不够。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #includ...

 

输出同现SEGMENTATION FAULT是因为试图写操作,这是因为将虚拟内存挂载为了READ ONLY方式导致的权限不够。

 1 #include <sys/shm.h>
 2 #include <unistd.h>
 3 #include <stdlib.h>
 4 #include <stdio.h>
 5 #include <sys/ipc.h>
 6 #include <string.h>
 7 
 8 int main(int argc, char *argv[])
 9 {
10     key_t key;
11     int shm_id;
12     char *ptr;
13     key = ftok("/", 10);
14     shm_id = shmget(key, 100, IPC_CREAT | SHM_R);
15     printf("get the share memory id is %d\n", shm_id);
16     if((ptr = (char *)shmat(shm_id, NULL, SHM_RDONLY)) == NULL)
17     {
18         if(shmctl(shm_id, IPC_RMID, NULL) == -1)
19             perror("Failed to remove memory segment");
20             exit(EXIT_FAILURE);
21     }
22     printf("in yangzd the attach add is %p\n", ptr);
23     printf("Now ,try to write the memory.\n");
24     *ptr = 'd';
25     printf("*ptr = %c\n", *ptr);
26     shmdt(ptr);
27     shmctl(shm_id, IPC_RMID, 0 );
28 }

输出:
 ./shmat_rd_flag_regular
get the share memory id is 32769
in yangzd the attach add is 0xb7734000
Now ,try to write the memory.
Segmentation fault

查看当前系统的共享内存信息,可以看到新建的共享内存段:

 

 

目录
相关文章
|
6天前
|
算法 安全 调度
深入理解操作系统:进程调度与内存管理
【7月更文挑战第10天】本文将深入探讨操作系统的核心机制,即进程调度和内存管理。我们将从理论和实践的角度出发,解释这些机制如何影响系统性能和用户体验。通过分析不同的调度算法和内存分配策略,我们旨在揭示操作系统设计背后的复杂性和精妙之处。
|
11天前
|
消息中间件 分布式计算 网络协议
从管道路由到共享内存:进程间通信的演变(内附通信方式经典面试题及详解)
进程间通信(Inter-Process Communication, IPC)是计算机科学中的一个重要概念,指的是运行在同一系统或不同系统上的多个进程之间互相发送和接收信息的能力。IPC机制允许进程间共享数据、协调执行流程,是实现分布式系统、多任务操作系统和并发编程的基础。
从管道路由到共享内存:进程间通信的演变(内附通信方式经典面试题及详解)
|
15天前
|
存储 安全 Linux
深入理解操作系统:从进程管理到内存分配
【6月更文挑战第30天】在数字时代的心脏,操作系统是现代计算不可或缺的组成部分。本文将深入探讨操作系统的核心功能,包括进程管理、内存分配以及文件系统管理。我们将通过实际案例分析,揭示这些机制如何在提高计算机性能的同时保证资源的有效利用。文章旨在为读者提供对操作系统工作原理的深刻理解,并展示其在现代技术中的应用价值。
|
22天前
|
存储 缓存 算法
深入理解操作系统:从进程管理到内存优化
【6月更文挑战第23天】在数字化时代,操作系统是支撑计算设备的心脏。本文将探索操作系统的核心组件,着重于进程管理和内存优化策略,揭示它们如何共同确保系统资源的高效利用和任务的顺畅执行。通过分析现代操作系统的设计哲学和技术实现,本文旨在为读者提供对操作系统内部工作原理的深刻洞察,并展示其对提高计算性能和用户体验的重要性。
|
4天前
|
消息中间件 Linux
【Linux】进程间通信——system V(共享内存 | 消息队列 | 信号量)(下)
【Linux】进程间通信——system V(共享内存 | 消息队列 | 信号量)(下)
14 0
|
4天前
|
消息中间件 存储 Linux
【Linux】进程间通信——system V(共享内存 | 消息队列 | 信号量)(上)
【Linux】进程间通信——system V(共享内存 | 消息队列 | 信号量)(上)
11 0
|
27天前
|
存储 缓存 运维
深入理解操作系统:从进程管理到内存分配
在数字时代的心脏,操作系统扮演着至关重要的角色。本文将深入探讨操作系统的核心机制,包括进程管理、内存分配和文件系统,揭示它们如何协同工作以支持现代计算需求。通过技术深度解析和实际应用示例,我们将一窥操作系统的复杂性与优雅,理解其在软件开发和系统性能优化中的重要性。
|
14天前
|
存储 算法 程序员
深入理解操作系统:从进程管理到内存分配
【7月更文挑战第1天】在数字时代的心脏,操作系统(OS)扮演着枢纽的角色。本文将探索操作系统的核心概念,包括进程管理、内存分配和文件系统,同时揭示这些机制如何协同工作以确保计算机系统的高效运行。我们将从用户和程序员的视角出发,分析操作系统如何在幕后默默支撑着我们的数字生活。
|
1月前
|
存储 安全 Python
进程通信 , 信号量 , 队列 , 管道 , 共享内存
进程通信 , 信号量 , 队列 , 管道 , 共享内存
|
18天前
|
监控 Linux
深入了解Linux的pmap命令:进程内存映射的利器
`pmap`是Linux下分析进程内存映射的工具,显示内存区域、权限、大小等信息。通过`/proc/[pid]/maps`获取数据,特点包括详细、实时和灵活。参数如`-x`显示扩展信息,`-d`显示设备。示例:`pmap -x 1234`查看进程1234的映射。注意权限、实时性和准确性。结合其他工具定期监控,排查内存问题。