当前位置: 技术问答>linux和unix
父子进程通信:内存共享的问题
来源: 互联网 发布时间:2017-03-05
本文导语: 程序创建子进程,父进程从客户端读取数据,通过内存共享传到子进程 现在的问题是能够接受到数据,数据拷贝不到内存里 子进程更没法得到 我哪写的不对吗 struct PlatMsgHead *Head; Head = (struct PlatMsgHead *)mma...
程序创建子进程,父进程从客户端读取数据,通过内存共享传到子进程
现在的问题是能够接受到数据,数据拷贝不到内存里 子进程更没法得到 我哪写的不对吗
现在的问题是能够接受到数据,数据拷贝不到内存里 子进程更没法得到 我哪写的不对吗
struct PlatMsgHead *Head;
Head = (struct PlatMsgHead *)mmap(NULL, sizeof(struct PlatMsgHead)*100, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_ANONYMOUS, -1, 0);
/* 从客户端读取buf */
/* 读取后拷贝到内存 */
memcpy(*(Head+i).MSG_HEAD_LEN, ((struct PlatMsgHead *)buf)->MSG_HEAD_LEN, 11);
|
memcpy(*(Head+i).MSG_HEAD_LEN, ((struct PlatMsgHead *)buf)->MSG_HEAD_LEN, 11);
.号的优先级高与*号,所以实际效果会变成*((Head+i).MSG_HEAD_LEN)
Head+i是地址指针,后面取点当然不对了.
.号的优先级高与*号,所以实际效果会变成*((Head+i).MSG_HEAD_LEN)
Head+i是地址指针,后面取点当然不对了.