社区
Linux/Unix社区
帖子详情
若问一个进程间的通信问题。
yydrewdrew
2007-06-01 03:39:51
我用共享内存实现进程间的通信。
用shmget和shmat实现内存的分配和映射。
得到指针void *ptr指向分配的地址;
将ptr转换成类的指针class*运行出现Segmentation fault。
若将ptr指向结构体就没问题,但是结构体里有诸如string变量的话就会出现同样错误。
是不是因为shmget和shmat是c调用所以不能存c++的类?
共享内存分配有没有面向c++的?
string这个变量我必须传,麻烦大家帮我想想办法。
...全文
231
3
打赏
收藏
若问一个进程间的通信问题。
我用共享内存实现进程间的通信。 用shmget和shmat实现内存的分配和映射。 得到指针void *ptr指向分配的地址; 将ptr转换成类的指针class*运行出现Segmentation fault。 若将ptr指向结构体就没问题,但是结构体里有诸如string变量的话就会出现同样错误。 是不是因为shmget和shmat是c调用所以不能存c++的类? 共享内存分配有没有面向c++的? string这个变量我必须传,麻烦大家帮我想想办法。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hundlom
2007-06-02
打赏
举报
回复
你申请的共享内存大小是固定的,可 struct multi_data*cc = (struct multi_data*)(aa);时结构体的大小因为string类型却无法固定大小。
yydrewdrew
2007-06-01
打赏
举报
回复
我把代码发出来:
#include <sys/types.h>
#include <sys/ipc.h>
#include <string>
#include <sys/shm.h>
using namespace std;
struct multi_data
{
int m;
string a;
};
int main()
{
void *aa = NULL;
int shmid;
int key;
key = ftok(".",1);
shmid = shmget(key,64*64,IPC_CREAT|0666);
aa = shmat(shmid,0,0);
string b = "";
string a("hdfhdjfhdj");
struct multi_data*cc = (struct multi_data*)(aa);
cc->a = a;
b = cc->a;
return 0;
}
如果去掉multi_data里的string a,传int m话,就会成功。
yydrewdrew
2007-06-01
打赏
举报
回复
错误是发生在赋值时:比如将一个string变量值赋给ptr->string成员。
Android专用驱动
Binder是一种
进程
间
通信
机制(IPC),它与传统的IPC机制对比,最大的特点是高效,因为
通信
数据在两个
进程
之
间
只需要执行一次拷贝即可。Binder在Android系统里面使用得非常广泛以及频繁。在涉及到比较大的
通信
数据时,...
Linux
进程
间
通信
目录
进程
间
通信
介绍
进程
间
通信
的概念
进程
间
通信
目的
进程
间
通信
分类
进程
间
通信
的本质
进程
间
通信
介绍
进程
间
通信
的概念
进程
间
通信
又称IPC(Inter-Process Communication),指多个
进程
之
间
相互
通信
,交换信息。
进程
间
...
Linux系统编程第05期:
进程
间
通信
本视频教程为《Linux系统编程》第05期,本期课程将会带领大家学习Linux下将近15种
进程
间
通信
IPC工具的使用,了解它们的
通信
机制、编程实例、使用场景、内核中的实现以及各自的优缺点。 本课程会提供PDF版本的PPT...
进程
间
通信
——管道
文章目录
进程
间
通信
介绍
进程
间
通信
目的
进程
间
通信
发展
进程
间
通信
分类管道什么是管道匿名管道实例代码用fork来共享管道原理站在文件描述符角度-深度理解管道站在内核角度-管道本质管道读写规则命令行中的 `|` 管道中...
进程
间
通信
之共享内存
共享内存实现
进程
间
通信
,是操作系统在实际物理内存开辟一块空
间
,
一个
进程
在自己的页表中,将该空
间
和
进程
地址空
间
上的共享区的一块地址空
间
形成映射关系。另外一
进程
在页表上,将同一块物理空
间
和该
进程
地址空
间
...
Linux/Unix社区
23,121
社区成员
74,508
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章