IPC消息队列如何发送对的向量

我试图发送和接收2进程之间的消息结构如下

struct _st{ long _var1; int _var2; int _var3; int _var4; int _var5; vector <pair<int,int> > _var6; }; 

和我的发送代码是

 send_val = msgsnd(msgqid, &message, sizeof(message), !IPC_NOWAIT); 

我以这种方式收到

 rec_val = msgrcv(msgqid, &message, sizeof(message), 0, !IPC_NOWAIT); 

当我从收到的消息分配我的_var6到另一个variables,并打印它的值,我得到垃圾。

我怎样才能正确地发送和接收这个结构?

_st不是POD你不能'简单地发送IPC没有序列化/反序列化它。 你实际上是发送_var6内部指针而不是其内容。

sizeof(message)只会得到static _st结构体的大小,不包含_var6内容大小。 您需要在msgsnd之前手动序列化_st ,并在msgrcv之后将其反序列化。

看看http://www.boost.org/doc/libs/1_52_0/libs/serialization/doc/index.html