我目前正在尝试在Linux上的2个进程之间的共享内存中放置结构.我没有问题共享bool或int但是当尝试共享字符串时,std :: string或char我有一个分段错误错误.

现在我的代码是:

#include

#include //shmat

#include

#include //open

#include

#include //close

using namespace std;

struct Prises{

int numero;

int transactionId;

bool reservation;

bool charge;

bool disponibilite;

bool defaut;

bool verrouillage;

bool trappe;

int LEDverte;

int LEDrouge;

std::string carte;

std::string etat;

};

int main()

{

const char *keyFile = "/tmp/key.dat";

/* Make sure the file exists. */

int descriptor = open(keyFile, O_CREAT | O_RDWR, S_IRWXU);

/* Only wanted to make sure that the file exists. */

close(descriptor);

/* Generate memory key. */

key_t sharedKey = ftok(keyFile, 1);

/* Get the shared memory segment id. Note we include

the permissions. */

int sharedSpaceId = shmget(sharedKey, 2*sizeof(Prises),

IPC_CREAT | S_IRUSR | S_IWUSR);

/* Attach the shared memory segment. */

Prises *PrisesArray = (Prises *) shmat(sharedSpaceId, NULL, 0);

PrisesArray[1].defaut=true;

PrisesArray[2].defaut=false;

int ok;

std::cin>>ok;

return 0;

}

在这个例子中,从2个结构共享2个bool工作得很好但是如果我尝试输入数据或从std :: string(etat,carte)读取数据,如下所示:

PrisesArray[1].etat="hello";

它在调试中给了我一个分段错误(并且明确在发布时不起作用),我尝试使用简单的字符串和字符(甚至一个字符),它仍然给我一个分段错误.

在文本共享或在这里犯错时我错过了什么吗?

linux 共享内存 出错,共享内存的std :: string给出了分段错误(linux)相关推荐

  1. linux识别fta32出错,解决FAT32格式U盘安装win10时0x8007000D错误

    问题由来 我一直使用U盘,UltraISO软碟通和msdn原版镜像来装系统.最近在把Win10 1709升级为1803时遇到了问题.同样也是使用UltraISO刻录镜像到U盘的方法安装的,这次从U盘启 ...

  2. 写出常用的5个linux命令 并解释,【PHP面试题】写出尽可能多的Linux命令。

    文章目录 一.考点 1.Linux常用命令 1) 系统安全 2) 进程管理 3) 用户管理 4) 文件系统 5) 系统关机和重启 6) 网络应用 7) 网络测试 8) 网络配置 9) 常用工具 10) ...

  3. linux signal 11 问题,embedded-在Linux中qemu:uncaught target signal 11(分段错误)

    在刮擦盒内我正在执行git clone,收到以下错误: qemu: uncaught target signal 11 (Segmentation fault) - core dumped 错误: / ...

  4. 如何将std :: string转换为const char *或char *?

    如何将<code>std::string转换为char*或const char* ? #1楼 看看这个: string str1("stackoverflow"); c ...

  5. linux 共享内存为分配,Linux在x86_64上共享内存分配

    我有64位REHL linux,Linux Linux ipms-sol1 2.6.32-71.el6.x86_64#1 SMP x86_64 x86_64 x86_64 GNU / Linux RA ...

  6. Linux进程间通信六 Posix 共享内存简介与示例

    1. 共享内存简介 共享内存主要用于不同进程之间相互通信,因为操作的是同一块地址,不需要内核和用户层之间数据拷贝,属于最快的进程间通信方式,不过,为了防止读写冲突,一般需要额外的同步手段.之前介绍了S ...

  7. 标准C++类std::string的内存共享和Copy-On-Write(写时拷贝)

    标准C++类std::string的内存共享,值得体会: 详见大牛:https://www.douban.com/group/topic/19621165/ 顾名思义,内存共享,就是两个乃至更多的对象 ...

  8. Linux基础入门--进程间通信--共享内存

    Linux基础入门--进程间通信--共享内存 1.共享内存IPC原理 2.共享内存管理 1.共享内存IPC原理 共享内存进程间通信机制主要用于实现进程间大量的数据传输,共享内存是在内存单独开辟的一段内 ...

  9. Linux 18 IPC之共享内存shm

    一.原理 共享内存是三个IPC(Inter-Process Communication)机制中的一个. 它允许两个不相关的进程访问同一个逻辑内存. 共享内存是在两个正在进行的进程之间传递数据的一种非常 ...

最新文章

  1. 低数值精度推理和训练
  2. Python学习【第七篇】基本数据类型
  3. 从创建数据库到备份恢复还原详解
  4. 中国机器人减速机行业十四五发展规划及未来需求预测报告2021-2027年
  5. java基础深入_java编程基础之方法深入
  6. php网站404页面302,404页面该怎么做?
  7. POJ3244(工科数学分析)
  8. groovy+mysql数据库_使用Groovy连接到MySQL
  9. 开发Adobe AIR的原生扩展
  10. php下的jsonp使用实例
  11. 搜狗Q1每天进账1886万,输入法日处理6亿请求成中国最大语音App
  12. springboot交通事故档案管理系统答辩PPT免费下载
  13. 如何判断python是否安装成功_python怎么判断模块安装完成
  14. 二叉链表java_二叉树的二叉链表存储及其Java实现
  15. 复习了C++前几章,做一个ASCII码转换的小程序
  16. 大话MIMO-OFDM联合工作实现过程
  17. 运筹优化算法工程师面试问题汇总
  18. GLM(General Language Model)代码分析
  19. C语言拆分一个三位数。以及交换两个数(常规法复习加指针法学习)
  20. Eclipse 报错The method xxx of type must override a superclass method、Description Resource Path Locati

热门文章

  1. 知识图谱算法岗位招聘要求总结
  2. MongoDB 安装报错:无法启动此程序,缺少dll文件
  3. 基于INA199的电机电流检测尝试
  4. iOS二维码扫描/识别
  5. 闽南师范大学基础计算机教学部,闽南师范大学计算机基础教学部.doc
  6. 超详细的WMS仓储管理系统介绍——出库篇
  7. java 将set转成数组,Java程序将Set转换为数组
  8. 禁止腾讯检测HTML代码,微信域名检测API接口的分享以及腾讯屏蔽检测的原理
  9. WMS智能仓储系统——保姆式服务系统
  10. 如何使用JWT进行身份验证与授权